Úvod
Data jsou opravdu běžným datovým typem, se kterým vývojáři pracují. Od časových razítek určitých akcí po přehledy, funkce registrace a časově omezený přístup v systémech, které vyžadují předplatné – často musíme porovnávat data.
To znamená, že porovnáváme, zda je datum po nebo před jiným, zda je datum dnes , kolik dní je mezi daty atd.
V tomto článku se podíváme na to, jak porovnat dvě data v JavaScriptu , což nám pomáhá odvodit, zda je datum před nebo po jiném.
Datum Objekt v JavaScriptu
Weboví vývojáři běžně používají externí balíčky (jako Moment.js) ke zpracování dat a času. Ale jak se moderní web vyvíjel, JavaScript zavedl nový objektový konstruktor nazvaný Date
pro zpracování dat a času.
To znamená, že k provádění základních kontrol a operací nepotřebujete externí knihovnu, což usnadňuje provádění těchto věcí ve Vanilla JS.
Date
class je pod pokličkou opravdu snadno pochopitelný – pouze ukládá Unixový čas měřeno v milisekundách.
I když se tato implementace zdá trochu zjednodušená, přidání Date
třída byla docela velkým zlepšením, protože konečně došlo na úroveň abstrakce mezi vývojáři a nezpracovanými daty.
Nyní se podívejme na různé způsoby porovnání dvou dat pomocí Date
objektů.
Porovnání dvou dat v JavaScriptu
Můžeme použít porovnávací operátory jako <
a >
dva porovnávají dva Date
objekty a pod kapotou se efektivně porovnávají jejich počítadla času. Efektivně porovnáváte dva celočíselné čítače:
function dateCompare(d1, d2){
const date1 = new Date(d1);
const date2 = new Date(d2);
if(date1 > date2){
console.log(`${d1} is greater than ${d2}`)
} else if(date1 < date2){
console.log(`${d2} is greater than ${d1}`)
} else{
console.log(`Both dates are equal`)
}
}
dateCompare("6/11/2020", "7/8/2019")
dateCompare("01/01/2021", "01/01/2021")
Výsledkem je:
6/11/2020 is greater than 7/8/2019
Both dates are equal
Jak vidíme, porovnávání dat se scvrkává na převod poskytnutých řetězců na Date
objektů a jejich porovnání s vhodným porovnávacím operátorem.
Poznámka: Operátory rovnosti (==
a ===
) nefungují s Date
objekty, takže explicitně nekontrolujeme, zda jsou stejné.
Dalším způsobem, jak porovnat dvě data, je použití vestavěného getTime()
metoda.
getTime()
metoda vrací počet milisekund, které uplynuly od epochy Unixu. Navíc můžete použít getDate()
, getHours()
, getDay()
, getMonth()
a getYear()
metody pro další specifikaci a porovnání informací, mimo jiné podobně pojmenované metody.
Kromě toho můžete také použít getUTCDay()
, getUTCDate()
, getUTCHour()
, getUTCMinute()
, atd. metody, které vracejí dané dočasné identifikátory, zónované specificky do UTC.
Poznámka: S tímto přístupem můžete použijte operátory rovnosti!
Podívejme se na příklad:
function compareDates(d1, d2){
const date1 = new Date(d1);
const date2 = new Date(d2);
if(date1.getTime() > date2.getTime()){
console.log(`${d1} is greater than ${d2} in terms of milliseconds`)
} else if(date1.getYear() < date2.getYear()){
console.log(`${d2} is greater than ${d1} in terms of years`)
} else if(date1.getDate() === date2.getDate()){
console.log(`Both dates are equal`)
}
}
compareDates("9/10/1997", "9/10/2000")
compareDates("11/11/2021", "11/1/2021")
Výsledkem je:
9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds
Nicméně, protože pracujeme s if
a if-else
bloky, některé příkazy se nikdy neprovedou. Například 9/10/1997
a 9/10/2000
mají stejné datum , 9/10
, i když ne ve stejném roce.
Zdarma e-kniha:Git Essentials
Prohlédněte si našeho praktického průvodce učením Git s osvědčenými postupy, průmyslově uznávanými standardy a přiloženým cheat sheetem. Přestaňte používat příkazy Google Git a skutečně se naučte to!
Například tento kód:
function compareDates(d1, d2){
const date1 = new Date(d1);
const date2 = new Date(d2);
if(date1.getDate() === date2.getDate()){
console.log(`Both dates are equal`)
}
}
compareDates("09/10/1997", "9/10/2000")
Výsledkem by bylo:
Both dates are equal
Protože jen porovnáváme datum, aniž bychom mysleli na rok.
Závěr
V tomto článku jsme stručně probrali, jak JavaScript zpracovává data pomocí Date
objektů. Poté jsme se zabývali tím, jak porovnávat data v JavaScriptu, přičemž máme na paměti několik užitečných metod.