Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中计算两个日期之间的日、月和年差?_Javascript_Date_Datetime_Time - Fatal编程技术网

如何在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); //

有人能解释一下毫秒是如何工作的吗?还有一些文档。我正试图计算出,给定两个日期,两个日期之间的年、日和月的差值是多少。理想情况下,我想把数字四舍五入,这样就不会有小数了。在没有任何库的JavaScript中,这是可能的吗

这是到目前为止我的代码。我试过做
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博士都来了,但这可能会涉及到网络人。