【问题标题】:Calculating number of days that occur between two Dates计算两个日期之间发生的天数
【发布时间】:2012-06-28 04:47:12
【问题描述】:

我正在寻找 JavaScript 中以下问题的最简洁的解决方案:

我想确定 JavaScript 中两个日期之间发生的天数。我不是在寻找以天为单位的日期差异,例如:

日期 1:2012 年 6 月 26 日晚上 11:05

日期 2:2012 年 6 月 27 日上午 12:15

我正在使用以下代码行:

var days = Math.ceil((date2 - date1) / 86400000);

我的结果是 1,我希望它是 2(计算 6 月 26 日和 6 月 27 日)

【问题讨论】:

  • 如果 date2
  • @Sebas 在我的情况下,我将始终假设一个积极的结果。
  • 嗯我真的很困惑,基本上你只想要代表 2 个给定日期的月份日期的 2 个数字之间的差异?所以差异是从 1 到 31,不是吗?

标签: javascript date timestamp timespan


【解决方案1】:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

将小时、分钟、秒和毫秒都设置为零。现在你有两个日期相同的时间。现在您可以按照以往的方式执行该操作并获得正确的答案。

【讨论】:

    【解决方案2】:

    删除日期的时间部分,然后进行日期减法。请参阅this jsfiddle 或下面的 sn-p。

    var d1 = new Date('June 26th 2012 11:05 PM'.replace('th',''));
    var d2 = new Date('June 27th 2012 12:15 AM'.replace('th',''));
    
    // remove the time portion, set the dates to midnight
    d1.setHours(0,0,0,0);
    d2.setHours(0,0,0,0);
    
    var diff = Math.ceil((d2 - d1) / 86400000) + 1;
    
    console.log(diff);
    

    ​

    【讨论】:

    • 我认为这是唯一的方法,我试图看看是否有另一种使用日期和时间的方法,这样我就可以避免为计算创建两个临时日期对象。但这行得通……谢谢。
    • 它仍然不正确 :) 你应该这样做 Math.abs() 。交换d1 和d2,你会得到0 作为答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多