8 ответов:
я использовал этот код:
Date.prototype.isSameDateAs = function(pDate) { return ( this.getFullYear() === pDate.getFullYear() && this.getMonth() === pDate.getMonth() && this.getDate() === pDate.getDate() ); }тогда вы просто называете его :
if (aDate.isSameDateAs(otherDate)) { ... }
Если вы заинтересованы только в проверке, если даты происходят в тот же день, независимо от времени, то вы можете использовать
toDateString()метод сравнить. Этот метод возвращает только дату без времени: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 }
тип преобразования в целые числа:
a = new Date(1995,11,17); b = new Date(1995,11,17); +a === +b; //true
Хедльнар,
вы можете попробовать (простите имя функции:) - исправлено в 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'
вычесть их и сравнить с нулем:
var date1 = new Date(); var date2 = new Date();/ / сделайте что-нибудь с датами...
(date1 - date2) ? alert("not equal") : alert("equal");чтобы поместить его в переменную:
var datesAreSame = !(date1 - date2);
простая однострочная Альтернатива для определения, равны ли две даты, игнорируя часть времени:
function isSameDate(a, b) { return Math.abs(a - b) < (1000 * 3600 * 24) && a.getDay() === b.getDay(); }он определяет, если даты a и 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
для лучшей поддержки использовать момент.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 )
Comments