3

我有两个 javascript 日期,我想知道它们是否是相同的日期。这两个日期可以是同一日期但有不同的时间:Date1 可以设置为下午 3 点,而 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

4 回答 4

1

你为什么不使用toDateString你的比较?

于 2012-11-15T19:51:16.170 回答
1

您可以获取日期的日、月和年,并检查它们是否相等。

if (date1.getUTCDate() == date2.getUTCDate() && 
    date1.getUTCMonth() == date2.getUTCMonth() && 
    date1.getUTCFullYear() == date2.getUTCFullYear()) {
 // dates are on the same day
}
于 2012-11-15T19:55:06.820 回答
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 年 1 月 1 日起)并进行比较。

于 2012-11-15T19:55:37.877 回答
1

setHours:在您的日期对象上使用该函数并将hoursminutes和设置为零:secondsmilliseconds

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 实例表示的时间的毫秒数。

例子:

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
于 2012-11-15T20:03:55.420 回答