Manipulisanje datumima može biti izazovan zadatak, ali uz pomoć date-fns
biblioteke, obrada datuma u JavaScript-u postaje znatno jednostavnija.
Zaronimo dublje u date-fns
paket kako bismo si olakšali rad s datumima. Ovaj paket je dizajniran da bude lagan i efikasan.
Instalacija paketa
Da bismo koristili biblioteku treće strane, prvo moramo da inicijalizujemo projekat pomoću npm-a. Pogledajmo korake potrebne za podešavanje.
Pretpostavljamo da imate instaliran Node.js ili IDE za potrebe ovog tutorijala.
- Navigirajte do željenog direktorijuma gde želite da radite.
- Pokrenite komandu
npm init
da inicijalizujete projekat. - Odgovorite na pitanja prema vašim preferencijama.
- Sada instalirajte
date-fns
pomoću sledeće komande:
npm install date-fns
- Kreirajte datoteku pod nazivom
dateFunctions.js
.
Sada smo spremni da počnemo koristiti date-fns
. Naučimo neke osnovne metode iz ovog paketa.
Provera validnosti datuma
Nisu svi datumi ispravni. Na primer, ne postoji datum 2021-02-30. Kako da proverimo da li je datum valjan?
Metoda isValid
iz date-fns
paketa nam pomaže da utvrdimo da li je dati datum ispravan.
Proverite da li sledeći kod radi ispravno prilikom provere validnosti datuma.
const { isValid } = require("date-fns"); console.log(isValid(new Date("2021, 02, 30")));
Ako pokrenete gornji kod, videćete da je 30. februar 2021. označen kao važeći datum. Oh! To nije tačno.
Zašto se to dešava?
JavaScript konvertuje dodatni dan u februaru u 1. mart 2021, što je valjan datum. Da biste ovo potvrdili, ispišite novi datum („2021, 02, 30“) u konzolu.
console.log(new Date("2021, 02, 30"));
date-fns
paket nudi metodu pod nazivom parse
da bi se rešio ovaj problem. Metoda parse
analizira dati datum i vraća tačne rezultate.
Pogledajte kod ispod:
const { isValid, parse } = require("date-fns"); const invalidDate = parse("30.02.2021", "dd.MM.yyyy", new Date()); const validDate = parse("25.03.2021", "dd.MM.yyyy", new Date()); console.log(isValid(invalidDate)); console.log(isValid(validDate));
Formatiranje datuma
Jedna od osnovnih potreba pri radu s datumima je njihovo formatiranje na način koji nam odgovara. Datume možemo formatirati u različite oblike koristeći metodu format
iz date-fns
paketa.
Formatirajte datum kao 23-01-1993, 1993-01-23 10:43:55, utorak, 23. januar 1993, itd. Pokrenite sledeći kod da biste dobili odgovarajući datum u navedenim formatima.
const { format } = require("date-fns"); console.log(format(new Date(), "dd-MM-yyyy")); console.log(format(new Date(), "dd/MM/yyyy HH:mm:ss")); console.log(format(new Date(), "PPPP"));
Kompletan spisak formata možete pronaći ovde.
Dodavanje dana
Metoda addDays
se koristi za određivanje roka nakon određenog broja dana.
Jednostavno, možemo dodati dane bilo kom datumu kako bismo dobili datum nakon određenog broja dana. Postoji mnogo različitih primena.
Recimo da vam je rođendan za X dana i da ste zauzeti tih dana. Možda se nećete setiti rođendana zbog užurbanog rasporeda. Možete jednostavno koristiti metodu addDays
da biste bili obavešteni o rođendanu nakon X dana. Pogledajte kod:
const { format, addDays } = require("date-fns"); const today = new Date(); // rođendan nakon 6 dana const birthday = addDays(today, 6); console.log(format(today, "PPPP")); console.log(format(birthday, "PPPP"));
Slično metodi addDays
, postoje i druge metode kao što su addHours
, subHours
, addMinutes
, subMinutes
, addSeconds
, subSeconds
, subDays
, addWeeks
, subWeeks
, addYears
, subYears
, itd. Možete lako pretpostaviti funkcionalnost metoda po njihovim imenima.
Isprobajte ih!
Udaljenost između datuma
Pisanje koda za poređenje datuma od nule može biti noćna mora. Zašto uopšte upoređujemo datume?
Postoji mnogo primena gde ste videli poređenja datuma. Na primer, na sajtovima društvenih medija se prikazuje obaveštenje kao „pre 1 minut“, „pre 12 sati“, „pre 1 dan“, itd. Ovde koristimo poređenje datuma od datuma i vremena objave do trenutnog datuma i vremena.
Metoda formatDistance
radi upravo to. Vraća razliku između dva data datuma.
Hajde da napišemo program koji će pronaći vaše godine:
const { formatDistance } = require("date-fns"); const birthday = new Date("1956, 01, 28"); const presentDay = new Date(); console.log(`Starost: ${formatDistance(presentDay, birthday)}`);
Niz datuma unutar intervala
Pretpostavimo da trebate pronaći imena i datume narednih X dana. Metoda eachDayOfInterval
nam pomaže da pronađemo dane između početnog i krajnjeg datuma.
Hajde da saznamo narednih 30 dana od današnjeg dana:
const { addDays, eachDayOfInterval, format } = require("date-fns"); const presentDay = new Date(); const after30Days = addDays(presentDay, 30); const _30Days = eachDayOfInterval({ start: presentDay, end: after30Days }); _30Days.forEach((day) => { console.log(format(day, "PPPP")); });
Maksimalni i minimalni datum
Metode max
i min
pronalaze maksimalni i minimalni datum među datim datumima. Metode u date-fns
su vrlo intuitivne i lako je pogoditi njihovu funkcionalnost. Hajde da napišemo neki kod:
const { min, max } = require("date-fns"); const _1 = new Date("1990, 04, 22"); const _2 = new Date("1990, 04, 23"); const _3 = new Date("1990, 04, 24"); const _4 = new Date("1990, 04, 25"); console.log(`Max: ${max([_1, _2, _3, _4])}`); console.log(`Min: ${min([_1, _2, _3, _4])}`);
Provera jednakosti datuma
Možete lako pretpostaviti funkcionalnost metode isEqual
. Kao što pretpostavljate, metoda isEqual
se koristi za proveru da li su dva datuma jednaka ili ne. Pogledajte primer koda ispod:
const { isEqual } = require("date-fns"); const _1 = new Date(); const _2 = new Date(); const _3 = new Date("1900, 03, 22"); console.log(isEqual(_1, _2)); console.log(isEqual(_2, _3)); console.log(isEqual(_3, _1));
Zaključak
Ako bismo detaljno obradili svaku metodu u date-fns
paketu, bili bi nam potrebni dani da završimo. Najbolji način da naučite bilo koji paket je da se upoznate sa osnovnim metodama, a zatim pročitate dokumentaciju za dodatne informacije. Primijenite isti scenario i za date-fns
paket.
U ovom vodiču ste naučili osnovne metode. Potražite detaljnije informacije u dokumentaciji ili razmislite o pohađanju online kurseva kao što je JavaScript, jQuery i JSON.
Srećno kodiranje 👨💻