我有两个javascript日期,我想知道他们是否是同一个日期。这两个日期可以是相同的日期,但具有不同的时间:Date1可以设置为3PM,而Date2可以设置为凌晨1点。
我尝试了这两个选项,但都不起作用:
// doesn't work when same date but different time
if (Date1.getTime() === Date2.getTime())
// gives true when dates are in different months
if (Date1.getUTCDate() === Date2.getUTCDate())
当Date1和Date2是同一天时,无论一天中的实际时间如何,最好的方法是什么?
感谢。
答案 0 :(得分:1)
为什么不使用toDateString
进行比较?
答案 1 :(得分:1)
您可以获取日期的日期,月份和年份,并检查它们是否相等。
if (date1.getUTCDate() == date2.getUTCDate() &&
date1.getUTCMonth() == date2.getUTCMonth() &&
date1.getUTCFullYear() == date2.getUTCFullYear()) {
// dates are on the same day
}
答案 2 :(得分:1)
var equalDates = function (a, b) {
var a_time = a.getTime();
var b_time = b.getTime();
var a_days = Math.floor(a_time / (24 * 3600 * 1000));
var b_days = Math.floor(b_time / (24 * 3600 * 1000));
return (a_days === b_days);
};
你首先得到的时间是毫秒。然后你向下舍入到几天(自1970-01-01以来)并比较那些。
答案 3 :(得分:1)
在日期对象上使用 setHours:
功能,并将hours
,minutes
,seconds
和milliseconds
设为零:
var today = new Date().setHours(0,0,0,0)
对于您的具体示例,您可以使用:
if(date1.setHours(0,0,0,0) === date2.setHours(0,0,0,0))
其中date1
和date2
是您的约会对象。
<强> setHours:
强>
根据当地时间设置指定日期的小时数 返回自1970年1月1日00:00:00 UTC以来的毫秒数 直到更新的Date实例所代表的时间。
<强> EXAMPLE: 强>
var today1 = new Date().setHours(0,0,0,0);
var today2 = new Date().setHours(1,0,0,0); //notice the 1 here
var today3 = new Date().setHours(0,0,0,0);
var today4 = new Date().setHours(0,0,0,0);
console.log(today1 === today2); //returns false
console.log(today3 === today4); //returns true