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

问候,

如何检查两个不同的date对象是否具有相同的date信息(具有相同的date,月份,年份…)? 我已经尝试“==”,“===”和.equals,但似乎没有工作。

您可以使用valueOf()getTime()

 a = new Date(1995,11,17); b = new Date(1995,11,17); a.getTime() === b.getTime() // prints true 

我用这个代码:

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

那么你就像这样调用它: if (aDate.isSameDateAs(otherDate)) { ... }

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

 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 } 

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'

types转换为整数:

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

减去它们并比较为零:

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

//对date做些什么…

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

把它变成一个variables:

 var datesAreSame = !(date1 - date2); 

用于确定两个date是否相等的简单的单行select,忽略时间部分:

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

它确定datea和b相差不超过一天,并共享一周中的同一天。

 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