Javascript,自1970年1月1日至今的年日

时间:2019-01-26 19:42:46

标签: javascript date

我正在尝试计算年数和天数(计算年数后仍然存在)。因此它显示了从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 :(得分:1)

如果您可以使用图书馆,我建议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>

答案 1 :(得分:0)

对于1970年以来的年份,只需从当前年份中减去:

date.getFullYear() - 1970

对于自年初以来的天数,您可以从当前日期减去当前年份中1月1日的日期以获取毫秒,然后除以每天的ms。但是,这不允许夏时制转换,这可能会影响结果。如果要向上舍入,以使1月1日的任何时间都是1天,依此类推,则可以将时间设置为中午12点,除以ms /天并向上舍入(或向下舍入并加一)。这样就可以得出一年中的天数。

例如

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月1日为0,1月2日为1,依此类推),只需从结果中减去1(或使用 Math.floor 代替 Math.ceil )。