如何在 JavaScript 中摆脱年龄(以天为单位)错误. 获得不同月份的两个连续日期的相同年龄差异



我正在使用以下JavaScript函数(脚本(来计算年龄(以天为单位(。它为一个月的最后一天和下个月的第一天提供相同的年龄(以天为单位(。例如,它为 31/05/2016 和 01/06/2016 提供 1400 天的年龄。谁能帮我找到并解决问题?提前谢谢。

function ageindays(birthDate){
var yearThen = parseInt(birthDate.substring(0,4), 10);
var monthThen = parseInt(birthDate.substring(5,7), 10);
var dayThen = parseInt(birthDate.substring(8,10), 10);
var today = new Date();
var birthday = new Date(yearThen, monthThen, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var diffindays = differenceInMilisecond/86400000
console.log(diffindays);
}
console.log("First date calculation")
ageindays("2016-06-01")
console.log("Next date calculation")
ageindays("2016-05-31")

答案在于如何在javascript中枚举日期。月份被枚举为 0-11,这意味着您必须将月份与 1 一起移动才能获得不错的响应。

当日期不存在时:6 月 31 日不存在,它只是流向 7 月:7 月第一。

所以两个示例日期:

  • 2016-05-31 解析如上变为: 2016-06-31 这是 2016-07-01 在 人类
  • 2016-06-01 解析如上变为: 2016-07-01 在 人类

最新更新