如何在JavaScript中计算两个日期之间的日、月和年差?
有人能解释一下毫秒是如何工作的吗?还有一些文档。我正试图计算出,给定两个日期,两个日期之间的年、日和月的差值是多少。理想情况下,我想把数字四舍五入,这样就不会有小数了。在没有任何库的JavaScript中,这是可能的吗 这是到目前为止我的代码。我试过做如何在JavaScript中计算两个日期之间的日、月和年差?,javascript,date,datetime,time,Javascript,Date,Datetime,Time,有人能解释一下毫秒是如何工作的吗?还有一些文档。我正试图计算出,给定两个日期,两个日期之间的年、日和月的差值是多少。理想情况下,我想把数字四舍五入,这样就不会有小数了。在没有任何库的JavaScript中,这是可能的吗 这是到目前为止我的代码。我试过做1000*60/365和一些组合,但我不知道它们代表什么-我可能也会尝试几个小时 var date1 = new Date(a); // 01/03/2008 var date2 = new Date(b); //
1000*60/365
和一些组合,但我不知道它们代表什么-我可能也会尝试几个小时
var date1 = new Date(a); // 01/03/2008
var date2 = new Date(b); // 22/03/2016
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
var diffMonths = Math.ceil(timeDiff / (12));
var diffYears = Math.ceil(timeDiff / (365));
console.log(diffDays);
console.log(diffMonths);
console.log(diffYears);
我设法算出了日差,但我仍然不完全理解。这对于纯JavaScript来说是一个困难的想法,因为语言处理日期时间的方式。最好的解决方案是使用MomentJS库。它真的很光滑,有很好的文档记录,并且易于使用 更新 我正在为将来从Moment.JS来的人使用这样的解决方案
var bornDate = moment([1990, 2, 12]); // get YYYY MM DD from datepicker etc
var userChoiceDate = moment([2016, 3, 22]);
var diffYears = bornDate.diff(userChoiceDate, 'years');
var diffDays = bornDate.diff(userChoiceDate, 'days');
console.log(diffYears);
console.log(diffDays);
这一刻很美好,如果你不想使用它,请查看以下帖子:。这就是你要找的吗?谢谢。我决定用这个和一点时间。JS是的,在某种程度上,这个时间是值得的,我明白,想要用纯JS来做这件事。然而,要考虑的事情是,在某些月份的天数和闰年(比如租赁期)的差异。处理日期不是一个简单的数学方程式。时间、日期和年份的分布并不均匀。这就是我们使用闰年和夏时制的方式(有些地方)。我试图创建一个处理dateTime的解决方案,这是一场斗争。我很高兴找到MomentJS。是的,公平地说,这是一个非常棒的图书馆。我有点偏执和无知,不想使用图书馆;我过去用过它,但它已经成为一个令人惊叹的图书馆。而且,“……因为语言处理日期时间的方式”是无端的批评。Date对象存在一些问题(主要是解析和格式化),但它处理日期和时间的逻辑性和一致性非常强。日期算术的问题不是日期的错,而是人类如何测量日、月和年。是的。我不是在批评这种语言。这不是JS的错。另外,大多数语言都有日期时间问题。因为时间本身。我们让所有的Who博士都来了,但这可能会涉及到网络人。