【问题标题】:How to work out days, months and years difference with two dates in JavaScript? [duplicate]如何用 JavaScript 中的两个日期计算出日、月和年的差异? [复制]
【发布时间】:2016-03-22 20:31:23
【问题描述】:

谁能解释毫秒是如何工作的以及一些文档。我正在尝试计算,给定两个日期,两个日期之间的年份、天数和months 差异是多少。理想情况下,我想对数字进行四舍五入,所以没有小数。这在没有任何库的 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);

我设法计算出天差,但我仍然不完全理解。

【问题讨论】:

  • 现在很好,如果您不想使用它,请查看此帖子:stackoverflow.com/questions/41948/…。这就是你要找的吗?
  • 谢谢。我决定使用这个和一点 moment.js
  • 是的,在某些时候,这一刻当然是值得的

标签: javascript date datetime time


【解决方案1】:

这对于纯 JavaScript 来说是一个困难的想法,因为该语言处理日期时间的方式。您最好的解决方案是使用 MomentJS 库。它非常时尚、有据可查且易于使用。

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 来做。但是,要考虑的事情是某些月份的天数和闰年的差异。处理日期不是一个简单的数学方程式。时间、日期和年份不均匀下降。这就是我们有闰年和夏令时(某些地方)的方式。我试图创建一个处理 dateTime 的解决方案,这是一场斗争。我很高兴找到 MomentJS。
  • 是的,公平地说,这是一个非常棒的图书馆。我有点偏执和无知,不想使用图书馆。我过去曾使用过它,但它已成为一个了不起的图书馆 + 1
  • 这不能回答问题。此外,“...因为语言处理日期时间的方式”是无端批评。 Date 对象存在问题(主要是解析和格式化),但它非常合乎逻辑且一致地处理日期和时间。日期算术问题不是日期的问题,而是人类如何测量日、月和年的问题。
  • 是的。这并不是说我在批评这种语言。这不是JS的错。另外,大多数语言都存在日期时间问题。因为时间本身。我们会在这里找到所有 Dr. Who,但这可能会涉及 Cyber​​ Men。
猜你喜欢
  • 1970-01-01
  • 2018-04-24
  • 2013-07-17
  • 1970-01-01
  • 2014-06-13
  • 2014-04-07
  • 2022-10-02
相关资源
最近更新 更多