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