检查两个日期是否具有相同的日期信息

时间:2010-12-13 11:25:36

标签: javascript date

问候,

如何检查两个不同的日期对象是否具有相同的日期信息(具有相同的日期,月份,年份......)?我试过“==”,“===”和.equals,但似乎都没有。

8 个答案:

答案 0 :(得分:108)

您可以使用valueOf()getTime()

a = new Date(1995,11,17);
b = new Date(1995,11,17);

a.getTime() === b.getTime() // prints true

答案 1 :(得分:34)

我使用了这段代码:

Date.prototype.isSameDateAs = function(pDate) {
  return (
    this.getFullYear() === pDate.getFullYear() &&
    this.getMonth() === pDate.getMonth() &&
    this.getDate() === pDate.getDate()
  );
}

然后你只需称它为:if (aDate.isSameDateAs(otherDate)) { ... }

答案 2 :(得分:30)

如果您只想检查日期是否在同一天发生,那么您可以使用toDateString() method进行比较。此方法仅返回没有时间的日期:

var start = new Date('2015-01-28T10:00:00Z');
var end = new Date('2015-01-28T18:00:00Z');

if (start.toDateString() === end.toDateString()) {
  // Same day - maybe different times
} else {
  // Different day
}

答案 3 :(得分:12)

键入convert to integers:

a = new Date(1995,11,17);
b = new Date(1995,11,17);
+a === +b;  //true

答案 4 :(得分:6)

Hellnar酒店,

你可以尝试(原谅函数名称:) - 根据felix的valueof修改,而不是getTime)

function isEqual(startDate, endDate) {
    return endDate.valueOf() == startDate.valueOf();
}

用法:

if(isEqual(date1, date2)){
   // do something
}

可能会让你成为那里的一部分。

另见:

'http://www.java2s.com/Tutorial/JavaScript/0240__Date/DatevalueOf.htm'

答案 5 :(得分:3)

减去它们并比较为零:

var date1 = new Date();
var date2 = new Date();

//用日期做点什么......

(date1 - date2) ? alert("not equal") : alert("equal");

将其放入变量:

var datesAreSame = !(date1 - date2);

答案 6 :(得分:3)

要获得更好的日期支持,请使用 moment.js isSame 方法

var starDate = moment('2018-03-06').startOf('day');
var endDate  = moment('2018-04-06').startOf('day');

console.log(starDate.isSame(endDate)); // false ( month is different )

var starDate = moment('2018-03-06').startOf('day');
var endDate  = moment('2018-03-06').startOf('day');

console.log(starDate.isSame(endDate)); // true ( year, month and day are the same )

答案 7 :(得分:1)

一个简单的单行备选方案,用于确定两个日期是否相等,忽略时间部分:

function isSameDate(a, b) {
    return Math.abs(a - b) < (1000 * 3600 * 24) && a.getDay() === b.getDay();
}

console.log(isSameDate(new Date(2017, 7, 21), new Date(2017, 7, 21))); //exact same date => true
console.log(isSameDate(new Date(2017, 7, 21, 23, 59, 59), new Date(2017, 7, 21))); //furthest same dates => true
console.log(isSameDate(new Date(2017, 7, 20, 23, 59, 59), new Date(2017, 7, 21))); //nearest different dates => false
console.log(isSameDate(new Date(2016, 7, 21), new Date(2017, 7, 21))); //different year => false
console.log(isSameDate(new Date(2017, 8, 21), new Date(2017, 7, 21))); //different month => false

确定日期a和b的差异是否不超过一天,并分享一周中的同一天。

Logger