Javascript, считая годы и дни с 1970-01-01 до сегодняшнего дня - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь подсчитать количество лет и дней (которые остаются после подсчета лет).Таким образом, он показывает, сколько времени прошло в годах + днях с 1970-01-01.Прямо сейчас я могу определить только правильные годы, и я не уверен, что дни правильные.Они оба разделены, мне нужно, чтобы они как-то делали var diffDays и diffYear.Вычисление, позволяющее компьютеру рассчитывать, что после подсчета лет число минусовок в днях будет миновать и показать, сколько дней осталось с сегодняшнего дня.

<head>
<script>

  var today = new Date();
  var dd = today.getDate();
  document.write(today);
  
  function myFunction() {
  
    var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
    var firstDate = new Date(1970,01,01);
    var secondDate = new Date();

    var diffYear = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)/365));
  
  
    var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
  
    
    document.getElementById("antalYear").innerHTML = diffYear;
  
    document.getElementById("antalDagar").innerHTML = diffDays;
  }
  
</script>

</head>


<body onload="myFunction()">

  <p>
    Numbers of years and days:
    <h3>
      <span id="antalYear"></span>
      years and 
      <span id="antalDagar"></span> 
      days
    </h3> Since: 1970,01,01.
  </p>

</body>

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Для количества лет с 1970 года просто вычтите его из текущего года:

date.getFullYear() - 1970

Для количества дней с начала года вы можете вычесть дату 1 января текущего года из текущей даты, чтобы получить миллисекунды, а затем разделить на мс в день. Однако это не учитывает переходы на летнее время, которые могут повлиять на результат. Если вы хотите округлить, чтобы в любое время 1 января был 1 день и т. Д., То вы можете установить время на 12 часов дня, разделить на мс / день и округлить в большую сторону (или округлить и добавить единицу). Это дает вам номер дня года.

* 1006 Е.Г. *

function dayOfYear(date) {
  // Copy date so don't affect original
  var d = new Date(date);
  // Get time value for start of 1 Jan in date year
  var yearStart = new Date(d.getFullYear(), 0);
  // Get number of days, rounded up
  return Math.ceil((d.setHours(12,0,0,0) - yearStart) / 8.64e7);
}

// Day of year for current date
console.log('Current day number: ' + dayOfYear(new Date()));

// Day of year for 31 Dec 2016
console.log('Day number for 31 Dec 2016: ' + dayOfYear(new Date(2016, 11, 31))); // 366

Если вы хотите количество завершенных дней (1 января - 0, 2 января - 1 и т. Д.), Просто вычтите 1 из результата (или используйте Math.floor вместо Math .ceil ).

0 голосов
/ 26 января 2019

Если у вас все в порядке с библиотекой, я бы порекомендовал moment.js

Это способ обработки почти всего, что связано с датами.

var oldDate = moment("1970-01-01", "YYYY-MM-DD")

var today = moment()
console.log(today.diff(oldDate, "years"));
console.log(today.diff(oldDate, "days"));

$(".years").append(today.diff(oldDate, "years"))

$(".days").append(today.diff(oldDate, "days"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Years:<div class="years"></div>
</br>
Days:<div class="days"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...