【问题标题】:Comparing JavaScript dates while ignoring time of day [duplicate]比较JavaScript日期而忽略一天中的时间[重复]
【发布时间】:2014-08-14 09:03:37
【问题描述】:
var currentDate = Thu Aug 14 2014 05:30:00 GMT+0530 (IST); // This is dateTimeobj

var deptDate = Thu Aug 14 2014 14:23:24 GMT+0530 (IST); // This is dateTimeobj

alert(currentDate == deptDate); // false

如何比较这两个日期,同时忽略时间部分?

【问题讨论】:

  • 这个问题与任何一个提议的原件都不重复,因为它显然要求进行特定类型的比较。

标签: javascript


【解决方案1】:

第一件事:日期对象与 jQuery 无关,即原生 JavaScript。

现在,假设 currentDatedeptDate 是 Date 对象,使用 setHours() 将两个日期设置为午夜,然后进行比较:

currentDate = currentDate.setHours(0,0,0,0);
deptDate = deptDate.setHours(0,0,0,0);

var check = currentDate == deptDate;

【讨论】:

    【解决方案2】:

    您可以调用以下函数,同时将两个日期作为参数,用于按年、月和日期进行比较:

    function areDatesEqual(date1, date2) {
        return (date1.getUTCDate() == date2.getUTCDate() 
            && date1.getUTCMonth() == date2.getUTCMonth() 
            && date1.getUTCFullYear() == date2.getUTCFullYear());
    }
    
    alert(areDatesEqual(currentDate, deptDate));
    

    感谢david a. 的时区建议。请在此处查看jsFiddle

    【讨论】:

    • 根据实际要求,时区也可能很重要。如果是,我会改用getUTCDate()getUTCMonth()getUTCFullYear()。如果需要检查日期是否代表在同一​​时刻开始/结束的时间范围,无论我的用户在哪里,我都会这样做。
    • @davida。谢谢你的建议。这可能通常不会成为问题,因为 JS 日期将在客户端的时区中处理,但是从编码字符串回到日期 obj 可能存在问题。相应更新。
    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 2010-11-05
    • 2011-10-25
    • 1970-01-01
    • 2016-02-14
    • 2018-07-28
    • 2011-02-11
    相关资源
    最近更新 更多