Порівнюйте лише частину дати без порівняння часу в JavaScript


397

Що не так з кодом нижче?

Можливо, було б простіше просто порівняти дату, а не час. Я не впевнений, як це зробити, і шукав, але не зміг знайти свою точну проблему.

До речі, коли я показую дві дати в попередженні, вони відображаються як однакові.

Мій код:

window.addEvent('domready', function() {
    var now = new Date();
    var input = $('datum').getValue();
    var dateArray = input.split('/');
    var userMonth = parseInt(dateArray[1])-1;
    var userDate = new Date();
    userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());

    if (userDate > now)
    {
        alert(now + '\n' + userDate);
    }
});

Чи є простіший спосіб порівняння дат і не враховуючи час?

Відповіді:


781

Я все ще вивчаю JavaScript, і єдиний спосіб, який я знайшов, який працює для мене, щоб порівняти дві дати без часу - це використовувати setHours метод об’єкта Date і встановити години, хвилини, секунди і мілісекунди на нуль. Потім порівняйте дві дати.

Наприклад,

date1 = new Date()
date2 = new Date(2011,8,20)

date2буде встановлено з нульовими годинами, хвилинами, секундами і мілісекундами, але дата1 встановить їх на час створення дати1. Щоб позбутися від годин, хвилин, секунд і мілісекунд на дату1, виконайте наступне:

date1.setHours(0,0,0,0)

Тепер ви можете порівнювати дві дати як ДАТИ тільки не турбуючись про елементи часу.


63
Майте на увазі, що тестування date1 === date2начебто не забезпечує послідовну поведінку; краще зробити date1.valueOf() === b.valueOf()чи навіть date1.getTime() === date2.getTime(). Дивність.
Ервін Весселс

4
Будьте уважні: якщо дата1 і дата2 - взимку і влітку, і ви плануєте переходити один з одним до іншого за допомогою addDays (1), проблема полягає в тому, що вони не матимуть однакового часового поясу через літній час, тому останній порівняти, що слід вказати рівні дати, не вийде, оскільки дві дати насправді не о 00: 00: 00: 0.
Олівер

9
Я знаю, що це старе питання, але воно з'являється першим у Google під час пошуку. Будьте обережні з цією відповіддю. Це дасть невірні відповіді, якщо користувач не перебуває у тому ж часовому поясі, як творець об’єкта дати. Наприклад, змініть часовий пояс на ОС комп'ютера на час Східного узбережжя (США). Відкрийте консоль браузера та введіть var date2 = new Date(2011,8,20). Тепер змініть часовий пояс ОС на Тихоокеанський час (США). У тому ж типі консолі браузера date2.toDateString()ви повернетесь, Mon Sep 19 2011а не вівторок 20-го!
Адам

9
Також зауважте, що setHours()встановлює час на основі поточного часового поясу, який автоматично виявляється браузером. Спробуйте: t = new Date("2016-02-29T01:45:49.098Z"); t.setHours(0,0,0,0); console.log(t.toJSON());надрукуйте "2016-02-28T15:00:00.000Z", дата 28, але не 29 Мій поточний часовий поясAsia/Tokyo
перехід

8
Цю відповідь дійсно слід оновити для використання setUTCxxxметодів замість варіантів, знаних у локальному / часовому поясі.
Штійн де Вітт

136

ПОДЕРЖАЙТЕ ЧАС

Використання об'єкта дати для подання одразу ж дати поставить перед вами величезну проблему надмірної точності. Вам потрібно керувати часом та часовим поясом, щоб їх не було, і вони можуть прокрастися назад на будь-якому кроці. Прийнята відповідь на це питання потрапляє у пастку.

Дата JavaScript не має поняття часового поясу . Настав момент часу (галочки з епохи) із зручними (статичними) функціями для перекладу до рядків і з них, використовуючи за замовчуванням «локальний» часовий пояс пристрою або, якщо зазначено, UTC або інший часовий пояс. Щоб представити лише дату ™ з об’єктом дати, ви хочете, щоб ваші дати представляли півночі UTC на початку дати, про яку йдеться. Це звичайна і необхідна конвенція, яка дозволяє вам працювати з датами незалежно від сезону або часового поясу їх створення. Тож вам потрібно бути дуже пильним, щоб керувати поняттям часового поясу, як під час створення об’єкта «Дата півночі UTC», так і при його серіалізації.

Багато людей плутають поведінку консолі за замовчуванням. Якщо ви розпорошите дату на консоль, вихід, який ви бачите, буде включати ваш часовий пояс. Це лише тому, що консоль дзвонить toString()у вашу дату та toString()дає місцеві репресії. Базова дата не має часового поясу ! (Поки час відповідає зсуву часового поясу, у вас все ще є об’єкт дати півночі UTC)

Десеріалізація (або створення об'єктів дати за півночі UTC)

Це крок округлення, з хитрістю, що є дві "правильні" відповіді. Більшу частину часу ви хочете, щоб ваша дата відображала часовий пояс користувача. Клацніть, якщо сьогодні ваш день народження . Користувачі в NZ та США клацають одночасно та отримують різні дати. У такому випадку зробіть це ...

// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));

Іноді міжнародна порівнянність зумовлює місцеву точність. У такому випадку зробіть це ...

// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCFullYear(), myDate.getUTCMonth(), myDate.getUTCDate()));

Десеріалізуйте побачення

Часто дати на дроті будуть у форматі РРРР-ММ-DD. Щоб десаріалізувати їх, зробіть це ...

var midnightUTCDate = new Date( dateString + 'T00:00:00Z');

Серіалізація

Подбавши про керування часовим поясом під час створення, тепер вам потрібно бути впевненим, щоб уникнути часового поясу, коли ви перетворюєтесь назад у рядкове представлення. Тож можна сміливо використовувати ...

  • toISOString()
  • getUTCxxx()
  • getTime() //returns a number with no time or timezone.
  • .toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.

І зовсім уникати всього іншого, особливо ...

  • getYear(), getMonth(),getDate()

Отже, щоб відповісти на ваше запитання, 7 років занадто пізно ...

<input type="date" onchange="isInPast(event)">
<script>
var isInPast = function(event){
  var userEntered = new Date(event.target.valueAsNumber); // valueAsNumber has no time or timezone!
  var now = new Date();
  var today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() ));
  if(userEntered.getTime() < today.getTime())
    alert("date is past");
  else if(userEntered.getTime() == today.getTime())
    alert("date is today");
  else
    alert("date is future");

}
</script>

Дивіться, як це працює ...

Оновлення 2019 року ... безкоштовні речі ...

Враховуючи популярність цієї відповіді, я все це вклав у код. Наступна функція повертає обернутий об'єкт дати та розкриває лише ті функції, які безпечно використовувати із простою датою ™.

Назвіть його об’єктом Date, і він вирішить JustADate, що відображає часовий пояс користувача. Назвіть це за допомогою рядка: якщо рядок є ISO 8601 із вказаним часовим поясом, ми просто округлимо часову частину. Якщо часовий пояс не вказаний, ми перетворимо його на дату, що відображає локальний часовий пояс, як і для об'єктів дати.

function JustADate(initDate){
  var utcMidnightDateObj = null
  // if no date supplied, use Now.
  if(!initDate)
    initDate = new Date();

  // if initDate specifies a timezone offset, or is already UTC, just keep the date part, reflecting the date _in that timezone_
  if(typeof initDate === "string" && initDate.match(/((\+|-)\d{2}:\d{2}|Z)$/gm)){  
     utcMidnightDateObj = new Date( initDate.substring(0,10) + 'T00:00:00Z');
  } else {
    // if init date is not already a date object, feed it to the date constructor.
    if(!(initDate instanceof Date))
      initDate = new Date(initDate);
      // Vital Step! Strip time part. Create UTC midnight dateObj according to local timezone.
      utcMidnightDateObj = new Date(Date.UTC(initDate.getFullYear(),initDate.getMonth(), initDate.getDate()));
  }

  return {
    toISOString:()=>utcMidnightDateObj.toISOString(),
    getUTCDate:()=>utcMidnightDateObj.getUTCDate(),
    getUTCDay:()=>utcMidnightDateObj.getUTCDay(),
    getUTCFullYear:()=>utcMidnightDateObj.getUTCFullYear(),
    getUTCMonth:()=>utcMidnightDateObj.getUTCMonth(),
    setUTCDate:(arg)=>utcMidnightDateObj.setUTCDate(arg),
    setUTCFullYear:(arg)=>utcMidnightDateObj.setUTCFullYear(arg),
    setUTCMonth:(arg)=>utcMidnightDateObj.setUTCMonth(arg),
    addDays:(days)=>{
      utcMidnightDateObj.setUTCDate(utcMidnightDateObj.getUTCDate + days)
    },
    toString:()=>utcMidnightDateObj.toString(),
    toLocaleDateString:(locale,options)=>{
      options = options || {};
      options.timezone = "UTC";
      locale = locale || "en-EN";
      return utcMidnightDateObj.toLocaleDateString(locale,options)
    }
  }
}


// if initDate already has a timezone, we'll just use the date part directly
console.log(JustADate('1963-11-22T12:30:00-06:00').toLocaleDateString())


3
Ваша відповідь містить дійсно цінну інформацію! На жаль, ви насправді не додали відповіді на власне питання ОП, заважаючи мені його відкликати. Спробуйте додати невеликий фрагмент коду, який відповідає на питання ОП.
Штійн де Вітт

Ха-ха-ха '7 років занадто пізно'! Мені подобається твій користувач стилю1585345! Ви отримали мій голос!
Штійн де Вітт

Я вважаю це корисним. Зауважте, у фрагменті "міжнародної порівнянності" є помилка друку. Я думаю, це має бути: нова дата (Date.UTC (myDate.getUTCFullYear (), myDate.getUTCMonth (), myDate.getUTCDate ()));
RikRak

1
Я б хотів, щоб я міг підтвердити цю відповідь 100 разів !!!
Snađошƒаӽ

77

Як щодо цього?

Date.prototype.withoutTime = function () {
    var d = new Date(this);
    d.setHours(0, 0, 0, 0);
    return d;
}

Це дозволяє порівнювати дату таку дату, як ця, не впливаючи на значення змінної:

var date1 = new Date(2014,1,1);
new Date().withoutTime() > date1.withoutTime(); // true

Це, безумовно, найелегантніша відповідь на оригінальний пост. Я не створив окрему функцію для своїх цілей, просто включив два рядки коду.
Danimal Reks

25

Використання Moment.js

Якщо у вас є можливість включити сторонні бібліотеки, напевно варто поглянути на Moment.js . Це дозволяє працювати з Dateі DateTimeбагато, набагато простіше.

Наприклад, побачивши, чи настає одна дата після іншої дати, але виключаючи їх час, ви зробите щось подібне:

var date1 = new Date(2016,9,20,12,0,0); // October 20, 2016 12:00:00
var date2 = new Date(2016,9,20,12,1,0); // October 20, 2016 12:01:00

// Comparison including time.
moment(date2).isAfter(date1); // => true

// Comparison excluding time.
moment(date2).isAfter(date1, 'day'); // => false

Другий параметр , який ви проходите в isAfterце точність , щоб зробити порівняння і може бути будь-який з year, month, week, day, hour, minuteабо second.


4
отримано 100-кратне прискорення переходу від рішення momentjs до рішення Date () + sethours. уважні друзі :-)
2c2c

@ 2c2c Цікаво. Безумовно, добре знати вплив на продуктивність. Скільки операцій ви використали для свого еталону?
Джошуа Пінтер

1
Я був приблизно в 1 мільйон порівнянь. не встановив фактичний орієнтир
2c2c

17

Просто порівняйте, використовуючи .toDateString, як показано нижче:

new Date().toDateString();

Це поверне вам лише частину дати, а не час або часовий пояс, як це:

"Пт. 03 лютого 2017 р."

Отже, обидві дати можна порівняти у такому форматі так само, не відкладаючи їх часу.


2
Це вдалий початок, але він не дозволить порівняти, тому що зараз це рядок. Для порівняння поверніть його на об’єкт «Дата», виконавши new Date(new Date().toDateString());
Grid Trekkor

@GridTrekkor Щоправда, але якщо ви просто хочете швидкого тесту на рівність, це найпростіше рішення.
CM

8

Це може бути трохи чистішою версією, також зауважте, що ви завжди повинні використовувати radix при використанні parseInt.

window.addEvent('domready', function() {
    // Create a Date object set to midnight on today's date
    var today = new Date((new Date()).setHours(0, 0, 0, 0)),
    input = $('datum').getValue(),
    dateArray = input.split('/'),
    // Always specify a radix with parseInt(), setting the radix to 10 ensures that
    // the number is interpreted as a decimal.  It is particularly important with
    // dates, if the user had entered '09' for the month and you don't use a
    // radix '09' is interpreted as an octal number and parseInt would return 0, not 9!
    userMonth = parseInt(dateArray[1], 10) - 1,
    // Create a Date object set to midnight on the day the user specified
    userDate = new Date(dateArray[2], userMonth, dateArray[0], 0, 0, 0, 0);

    // Convert date objects to milliseconds and compare
    if(userDate.getTime() > today.getTime())
    {
            alert(today+'\n'+userDate);
    }
});

Ознайомтеся з сторінкою MDC parseInt для отримання додаткової інформації про радіус.

JSLint - це чудовий інструмент для лову таких речей, як відсутній радіус та багато інших речей, які можуть спричинити незрозумілі та важкі помилки налагодження. Це змушує вас використовувати кращі стандарти кодування, щоб уникнути майбутніх головних болів. Я використовую його у кожному кодовому коді проекту JavaScript.


@EmKay Це не повинно бути настільки великим питанням, оскільки ES5 досить стандартний у більшості браузерів, і він забороняє восьмеричну інтерпретацію, Але деякі браузери все ще можуть використовувати стару восьмигранну інтерпретацію для зворотних причин сумісності, тому я б продовжував використовувати radix на осяжне майбутнє.
Марний код

Якщо ви використовуєте суворі режими, вісімкові інтерпретації викличуть помилки, що добре, оскільки це допомагає вам знайти помилки, які можуть бути неправильно інтерпретовані.
Марний код


4

Якщо ви по-справжньому порівнюєте дату лише з тимчасовим компонентом, іншим рішенням, яке може почуватися не так, але працює і уникає Date()головних болів у часі та часовому поясі, є порівняння дати строки ISO безпосередньо за допомогою порівняння рядків:

> "2019-04-22" <= "2019-04-23"
true
> "2019-04-22" <= "2019-04-22"
true
> "2019-04-22" <= "2019-04-21"
false
> "2019-04-22" === "2019-04-22"
true

Ви можете отримати поточну дату (дату UTC, не обов’язково місцеву дату користувача), використовуючи:

> new Date().toISOString().split("T")[0]
"2019-04-22"

Мій аргумент на користь цього - простота програміста - ви набагато менше шансів це зробити, ніж намагатися правильно обробляти дати та зсуви, ймовірно, ціною швидкості (я не порівнював продуктивність)


Ви також можете зробити new Date().toISOString().substr(0, 10) // "2019-04-22".
стом

Для місцевої дати (дата не UTC) ви можете використовувати new Date().toLocaleDateString() // "8/26/2019". Але тоді порівняння тексту не буде точним (як "8/26/2019" >= "9/29/2001"помилкове). Тому вам потрібно буде конвертувати його, new Date(new Date().toLocaleDateString())щоб точно порівняти з іншою датою.
стом

4

Просто використовуйте toDateString () в обидві дати. toDateString не включає час, тому для двох разів за одну і ту ж дату значення будуть рівні, як показано нижче.

var d1 = new Date(2019,01,01,1,20)
var d2 = new Date(2019,01,01,2,20)
console.log(d1==d2) // false
console.log(d1.toDateString() == d2.toDateString()) // true

Очевидно, що деякі питання щодо часового поясу, висловлені в цьому питанні в інших місцях, є дійсними, але в багатьох сценаріях вони не є актуальними.


1
У моєму випадку це рішення набагато краще, ніж обрана відповідь і більш голосовані відповіді. Це чітко сказано в заголовку "не порівнюючи час", це рішення робить саме так, заощаджуючи необхідність встановлення часу для маніпулювання порівнянням. Щоб відповісти "Чи відбулися подія X і подія Y в один і той же день", більш сенсово порівнювати дату, а не відповідати "Чи 00: 00: 00.00 AM дати події X точно однакові з 00:00: 00.00 дати події Y? " це те, що роблять багато інших відповідей
Mr.K

3

Ось так я це роблю:

var myDate  = new Date($('input[name=frequency_start]').val()).setHours(0,0,0,0);
var today   = new Date().setHours(0,0,0,0);
if(today>myDate){
    jAlert('Please Enter a date in the future','Date Start Error', function(){
        $('input[name=frequency_start]').focus().select();
    });
}

В даний час я використовую це у виробництві, і у мене немає жодної проблеми чи сумісності веб-переглядачів тощо ... будь-які причини, чому ви говорите, що getTime()це потрібно?
Фабріціо

5
Майте на увазі, що setHours()змінює об'єкт, на який він викликається, і повертає дату як число мілісекунд (еквівалент дзвінку getTime()). Тому ваша todayзмінна не є Dateоб'єктом, як очікували деякі, а насправді цілим числом мілісекунд. Як побічний ефект, саме тому вам не потрібно було телефонувати getTime()перед порівнянням, оскільки це вже є незрозумілий спосіб.
Тімоті Уолтерс

3

Оскільки я не бачу тут подібного підходу, і мені не подобається встановлювати h / m / s / ms на 0, оскільки це може спричинити проблеми з точним переходом до локального часового поясу зі зміненим dateоб'єктом (я вважаю, що так), дозвольте мені введіть тут це, написане кілька моментів тому, функцію lil:

+: Простота у використанні, робить основні операції зі порівняння (порівняння дня, місяця та року без часу.)
-: Схоже, це повна протилежність мислення "поза коробкою".

function datecompare(date1, sign, date2) {
    var day1 = date1.getDate();
    var mon1 = date1.getMonth();
    var year1 = date1.getFullYear();
    var day2 = date2.getDate();
    var mon2 = date2.getMonth();
    var year2 = date2.getFullYear();
    if (sign === '===') {
        if (day1 === day2 && mon1 === mon2 && year1 === year2) return true;
        else return false;
    }
    else if (sign === '>') {
        if (year1 > year2) return true;
        else if (year1 === year2 && mon1 > mon2) return true;
        else if (year1 === year2 && mon1 === mon2 && day1 > day2) return true;
        else return false;
    }    
}

Використання:

datecompare(date1, '===', date2)для перевірки рівності,
datecompare(date1, '>', date2)для більшої перевірки,
!datecompare(date1, '>', date2)для меншої чи однакової перевірки

Крім того, очевидно, ви можете переключитися date1і date2в місцях, щоб досягти будь-якого іншого простого порівняння.


Хороший плюс, плюс плюс, допоміг мені, тепер, сподіваюся, ізо конверсії не кусаються, ха-ха, THX.
edencorbin

3

Ефективний і правильний спосіб порівняння дат:

Math.floor(date1.getTime() / 86400000) > Math.floor(date2.getTime() / 86400000);

Він ігнорує часову частину, працює для різних часових поясів, і ви можете порівняти за рівність ==. 86400000 - це кількість мілісекунд в день ( = 24*60*60*1000).

Врахуйте , що оператор рівності ==не повинен ніколи використовуватися для порівняння об'єктів Date , оскільки він зазнає невдачі , коли можна було б очікувати тест рівності на роботі , тому що це порівняння двох об'єктів Date (і не порівняти дві дати) , наприклад:

> date1;
outputs: Thu Mar 08 2018 00:00:00 GMT+1300

> date2;
outputs: Thu Mar 08 2018 00:00:00 GMT+1300

> date1 == date2;
outputs: false

> Math.floor(date1.getTime() / 86400000) == Math.floor(date2.getTime() / 86400000);
outputs: true

Примітки: Якщо ви порівнюєте об'єкти дати, у яких часова частина встановлена ​​на нуль, ви можете використовувати, date1.getTime() == date2.getTime()але оптимізація навряд чи варта. Ви можете використовувати <, >, <=або >=при порівнянні дати об'єктів безпосередньо , тому що ці оператори спочатку перетворити об'єкт Date, викликавши .valueOf()перед оператором робить порівняння.


2

Прочитавши це запитання приблизно в той же час після його опублікування, я вирішив опублікувати ще одне рішення, оскільки не вважав його цілком задовільним, принаймні для моїх потреб:

Я використав щось подібне:

var currentDate= new Date().setHours(0,0,0,0);

var startDay = new Date(currentDate - 86400000 * 2);
var finalDay = new Date(currentDate + 86400000 * 2);

Таким чином я міг би використати дати у форматі, який я хотів потім обробити. Але це було лише для моєї потреби, але я все-таки вирішив опублікувати це, можливо, це комусь допоможе


1
Зверніть увагу, що ваша currentDateзмінна не є датою, це число мілісекунд з 1970-01-01. У setHours()метод змінює дати об'єкта він викликається, і повертає еквівалент getTime()(значення дати в мілісекундах , так як 1970-01-01).
Тімоті Уолтерс

1

Переконайтеся, що ви побудували userDateчотиризначний рік як setFullYear(10, ...) !== setFullYear(2010, ...).


1

Ви можете використовувати деяку арифметику із загальною сумою мс.

var date = new Date(date1);
date.setHours(0, 0, 0, 0);

var diff = date2.getTime() - date.getTime();
return diff >= 0 && diff < 86400000;

Мені це подобається, тому що жодні оновлення початкових дат не робляться та виконуються швидше, ніж розділення рядків та порівняння.

Сподіваюся, що це допоможе!


1

Цей JS змінить вміст після встановленої дати тут те саме, але для w3schools

date1 = new Date()
date2 = new Date(2019,5,2) //the date you are comparing

date1.setHours(0,0,0,0)

var stockcnt = document.getElementById('demo').innerHTML;
if (date1 > date2){
document.getElementById('demo').innerHTML="yes"; //change if date is > set date (date2)
}else{
document.getElementById('demo').innerHTML="hello"; //change if date is < set date (date2)
}
<p id="demo">hello</p> <!--What will be changed-->
<!--if you check back in tomorrow, it will say yes instead of hello... or you could change the date... or change > to <-->


1

Це працює для мене:

 export default (chosenDate) => {
  const now = new Date();
  const today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
  const splitChosenDate = chosenDate.split('/');

  today.setHours(0, 0, 0, 0);
  const fromDate = today.getTime();
  const toDate = new Date(splitChosenDate[2], splitChosenDate[1] - 1, splitChosenDate[0]).getTime();

  return toDate < fromDate;
};

У прийнятій відповіді є питання часового поясу, а в інший час - 00:00:00


0

Я знаю, що на це питання вже відповіли, і це може бути не найкращим способом, але в моєму сценарії воно працює чудово, тому я подумав, що це може допомогти комусь, як я.

якщо у вас є date stringяк

String dateString="2018-01-01T18:19:12.543";

і ви просто хочете порівняти частину дати з іншим об'єктом дати в JS,

var anotherDate=new Date(); //some date

то ви повинні до об'єкту за допомогоюconvertstringDatenew Date("2018-01-01T18:19:12.543");

і ось хитрість:

var valueDate =new Date(new Date(dateString).toDateString());

            return valueDate.valueOf() == anotherDate.valueOf(); //here is the final result

Я використовував toDateString()з Date objectз JS, який повертає тільки рядки дати.

Примітка. Не забувайте використовувати цю .valueOf()функцію при порівнянні дат.

Більше інформації про .valeOf()це тут посилання

Щасливі кодування.


0

Це допоможе. Мені вдалося вийти так.

var currentDate = new Date(new Date().getFullYear(), new Date().getMonth() , new Date().getDate())

0

Порівняння з setHours()буде рішенням. Зразок:

var d1 = new Date();
var d2 = new Date("2019-2-23");
if(d1.setHours(0,0,0,0) == d2.setHours(0,0,0,0)){
    console.log(true)
}else{
    console.log(false)
}

0
var fromdate = new Date(MM/DD/YYYY);
var todate = new Date(MM/DD/YYYY);
if (fromdate > todate){
    console.log('False');
}else{
    console.log('True');
}

якщо формат дати інший, то використовуйте бібліотеку moment.js для перетворення формату вашої дати, а потім використовуйте наведений вище код для порівняння двох дат

Приклад:

Якщо Ваша дата вказана в "DD / MM / РРРР" і хоче перетворити її в "MM / DD / РРРР", то подивіться наведений нижче приклад коду

var newfromdate = new Date(moment(fromdate, "DD/MM/YYYY").format("MM/DD/YYYY"));
console.log(newfromdate);
var newtodate = new Date(moment(todate, "DD/MM/YYYY").format("MM/DD/YYYY"));
console.log(newtodate);

0

Ви можете використовувати fp_incr (0). Що встановлює частину часового поясу на півночі та повертає об’єкт дати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.