检查两个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