Рад са датумима Коришћење дате-фнс у ЈаваСцрипт-у

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 👨‍💻