比较javascript日期

时间:2012-11-15 19:49:28

标签: javascript

我有两个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是同一天时,无论一天中的实际时间如何,最好的方法是什么?

感谢。

4 个答案:

答案 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: 功能,并将hoursminutessecondsmilliseconds设为零:

var today = new Date().setHours(0,0,0,0)

对于您的具体示例,您可以使用

if(date1.setHours(0,0,0,0) === date2.setHours(0,0,0,0))

其中date1date2是您的约会对象。

<强> 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