gpt4 book ai didi

javascript - Javascript 中的年龄(+闰年)计算?

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:32 33 4
gpt4 key购买 nike

我读过这个question但有很多评论,有人说它是准确的,有人说它不准确。

无论如何,我有这段代码可以用 Javascript 计算人的年龄:

 function calculateDiffYearByString(date)
{
var cur = new Date();
var diff = (cur.getTime() - new Date(date)) / (60 * 60 * 24 * 1000);
return diff / 365.242;
}

现在,这部分 var diff = (cur.getTime() - new Date(date))/(60 * 60 * 24 * 1000); 考虑所有实际天数(24 hr) 从开始日期到结束日期包括闰年考虑。

它只是按 24 小时的组计算天数。我的问题是关于 /365.242;

当我问谷歌时,它说:

enter image description here

这就是为什么我将它与 365.242 分开。

但我想我错了。因为(恕我直言).242 部分是关于闰年的。所以我想在整体计算中恐怕会考虑闰年两次 ..

我错了吗?我的计算是否 100% 正确?

最佳答案

计算不正确,因为假设一年是 365.242 天。

一年平均为 365.242 天,但没有实际年份是 365.242 天。一年正好是 365 天或 366 天(忽略有些年份有闰秒的小细节。)

要精确计算分数年的年龄,您必须计算到最后一个生日为止的年数,然后根据当年的天数计算当年的分数。


您可以使用这样的代码来计算准确的年龄:

function isLeapYear(year) {
var d = new Date(year, 1, 28);
d.setDate(d.getDate() + 1);
return d.getMonth() == 1;
}

function getAge(date) {
var d = new Date(date), now = new Date();
var years = now.getFullYear() - d.getFullYear();
d.setFullYear(d.getFullYear() + years);
if (d > now) {
years--;
d.setFullYear(d.getFullYear() - 1);
}
var days = (now.getTime() - d.getTime()) / (3600 * 24 * 1000);
return years + days / (isLeapYear(now.getFullYear()) ? 366 : 365);
}

var date = '1685-03-21';

alert(getAge(date) + ' years');

演示:http://jsfiddle.net/Guffa/yMxck/

(注意:天数也是一个分数值,所以它会计算年龄精确到毫秒。如果你想要整天,你可以在计算周围添加一个 Math.floor days 变量。)

关于javascript - Javascript 中的年龄(+闰年)计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16435981/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com