Porovnejte data JavaScriptu (den/minuta/hodina/před/po) s příklady

V návaznosti na náš článek o přidávání a odečítání času od dat v JavaScriptu – zde je návod, jak porovnat dva objekty data JavaScript.

Tento článek se bude zabývat porovnáním dat/časů s různými úrovněmi podrobnosti – od dat, která jsou přesným měsícem, až po data, která spadají do stejného roku.

Použití booleovských operátorů

Objekty data v nativním JavaScriptu lze porovnávat pomocí standardních booleovských/porovnávacích operátorů – což vám umožňuje porovnávat data kontrolou, zda jsou rovná, nerovná, větší, menší než, rovna nebo větší než nebo rovna či menší než navzájem.

Kontrola, zda jsou data v Javascriptu totožná

Zkontrolujte rovnost:

var date1 = new Date(); // Defaults to now
var date2 = new Date(); // Defaults to now

if(date1 == date2) {
    // Dates are the same
}

Kontrola, zda je datum před nebo po jiném

Jednoduše použijte standardní booleovské porovnávací operátory JavaScriptu:

var date1 = new Date(); // Defaults to now
var date2 = new Date(); // Defaults to now

date1.setTime(date1.getTime() + (1 * 60 * 60 * 1000));  // Add an hour to date1

if(date1 > date2){
    // The time stored by date1 is after date2
}

if(date2 < date1){
    //The time stored by date2 is before date1
}

Kontrola, zda dva datové objekty sdílejí stejnou sekundu, minutu, hodinu, den, měsíc, rok

Při použití booleovských srovnání na datech jsou tyto objekty porovnávány až na milisekundu (1/1000 sekundy). Zde je návod, jak porovnat různé časové jednotky:

var date1 = new Date(); // Defaults to now
var date2 = new Date(); // Defaults to now

date1.setTime(date1.getTime() + (1 * 60 * 60 * 1000));  // Add an hour to date1


# The getSeconds() method will return the seconds component of the date object from 0-59

# The getMinutes() method will return the minutes component of the date object from 0-59

# The getHours() method will return the hours component of the date object from 0-23

# The getDate() method will return the date (day in month) of the date object from 0-31

# The getMonth() method will return the month of the date object from 0-11 (Starting with January at 0)

# The getFullYear() method will return the year of the date object as a 4 digit number (eg 2021)

#So, to see if two dates share the same minute you could run

if(date1.getFullYear() == date2.getFullYear() && date1.getMonth() == date2.getMonth() && date1.getDate() == date2.getDate() && date1.getHours() == date2.getHours() && date1.getMinutes() == date2.getMinutes() && ){
    // Dates are the same down to the minute
}

Moment JS

Ten poslední příklad výše je trochu chaotický – existuje lepší způsob.

Pokud vytváříte aplikace, které často pracují s daty, je Moment.js neocenitelný.

Moment.js poskytuje nástroje pro správu dat, časových pásem, časových období (období mezi dvěma daty) – to vše pohodlně zabaleno do snadno použitelných tříd. Dokumentace je skvělá a zjednodušuje práci s datem a zároveň je spolehlivější.

Najdete ho na:

https://momentjs.com/

Pokud byste například zkontrolovali, zda dvě data spadají do stejné minuty, jednoduše byste spustili:

date1 = moment(); // Defaults to now
date2 = moment().add(7, 'days').add(2, 'minutes'); // Second date is 7 days and 2 minutes into the future

date1.isSame(date2, 'minute'); // Returns true if the dates are the same down to the minute