Nadiđite JavaScriptove ugrađene mogućnosti datuma i vremena s jednom od ovih zamjenskih biblioteka.

JavaScript ugrađena podrška za rukovanje datumima je korisna, ali može biti neugodna za korištenje. Složene operacije kao što su pretvorbe vremenskih zona i formatiranje datuma često su izazovne.

Srećom, dostupno je nekoliko paketa koji rad s datumima i vremenom u JavaScriptu čine manje stresnim. Ovdje ćete saznati više o nekim od ovih paketa i kako možete početi raditi na tim paketima.

Što se tiče rada s datumima i vremenima, izvorni JavaScript objekt Datum ima ograničenu funkcionalnost.

Moment.js, JavaScript biblioteka, uvela je mnoge značajke nedostupne u izvornom Date objektu. Kao rezultat toga, postao je glavna biblioteka za rad s datumima i vremenima.

Da biste instalirali Moment.js s npm-om, pokrenite sljedeću naredbu iz direktorija vašeg projekta:

npm instalirati trenutak

Nakon instalacije, možete uvesti Moment.js u svoj projekt i izvoditi operacije s bibliotekom:

konst trenutak = zahtijevati('trenutak');
konst sad = trenutak();
konst sadaString = sada.format('GGGG-MM-DD HH: mm: ss');
instagram viewer

konzola.log(`Trenutni datum i vrijeme su ${nowString}`);

Ovaj isječak koda uvozi biblioteku Moment.js i stvara objekt trenutka koristeći trenutni datum i vrijeme s trenutak() funkcija. Zatim pokazuje kako formatirati stvoreni objekt datuma kao niz s format() metoda koja uzima format datuma/vremena kao argument.

Također možete koristiti ovu biblioteku za dodavanje i oduzimanje vremenskih intervala:

konst addTenMinutes = moment().add(10, 'minute');
konzola.log(`${addTenMinutes.format('h: mm a')}`);

konst oduzmiDvaDana = trenutak().oduzmi(2, 'dani');
konzola.log(`${subtractTwoDays.format('dddd, MMMM do GGGG')}`);

Program zapisuje dvije varijable u konzolu, u različitim formatima. Prvi, dodajDesetMinuta, sadrži rezultat dodavanja 10 minuta trenutnom datumu i vremenu. Drugi, oduzmiDvaDana, ima trenutnu vrijednost datuma i vremena uz oduzimanje dva dana.

Moment.js može izvoditi druge operacije poput provjere prijestupnih godina i pretvaranja iz jednog formata datuma u drugi.

Važno je napomenuti da Moment.js više ne održava njegov glavni razvojni tim. Programeri savjetuju korištenje alternative poput Luxon.js.

Luxon.js je robusna i modernija JavaScript biblioteka za rad s datumima. Alternativa Moment.js-u, bavi se ograničenjima starije biblioteke poput promjenjivosti.

Možete instalirati Luxon s npm-om i zatim ga uvesti Datum vrijeme klase u vašem Node.js projektu koristeći zahtijevati () funkcija:

konst {DatumVrijeme} = zahtijevati('Luxon');

U Luxonu, objekti DateTime odnose se na instance vremena koje idu sve do milisekundi.

Možete stvoriti nove Datum vrijeme objekte i pristup njihovim komponentama, kao što su godina, mjesec, minuta i sekunda:

konst sad = datumvrijeme.sada();
konst godina = sada.godina;
konst minuta = sada.minuta;
konst drugi = sad.drugi;

Ovaj kod stvara novi Datum vrijeme objekt koji predstavlja trenutni datum i vrijeme pomoću sada() metoda. Zatim pristupa komponentama tog datuma pomoću godina, minuta, i drugi Svojstva.

Glavna razlika između Luxon.js i Moment.js je njegov nepromjenjiv karakter. Svi DateTime objekti su nepromjenjivi u Luxonu, što znači da ne možete mijenjati DateTime svojstva. Umjesto toga, možete stvoriti nove instance DateTime iz postojećih.

Na primjer:

konst sad = datumvrijeme.sada();
konst sutra = sada.plus({ dana: 1 });

Ovaj kod stvara novi Datum vrijeme objekt imenovan sutra bazirano na sada objekt, pomoću plus metoda, prosljeđujući joj vrijednost 1 dan kao argument. Metoda plus stvara novi objekt DateTime s navedenim brojem dana dodanih izvornom objektu.

Još jedna prednost Luxon.js je njegova pouzdana podrška za vremensku zonu, koja je neophodna za rad s datumima i vremenima u modernim web aplikacijama. Knjižnica koristi API za internacionalizaciju u modernim preglednicima za pružanje točne podrške za vremensku zonu.

Međutim, jedna od loših strana Luxon.js-a su ograničeni resursi zajednice.

Date-fns je vrlo lagana JavaScript biblioteka dizajnirana za rad s datumima i vremenima. Gradi se na izvornom JavaScript objektu.

Date-fns koristi tehnike funkcionalnog programiranja i uključuje nepromjenjivu značajku, koja čini rad s datumima jednostavnijim i smanjuje vjerojatnost grešaka u vašem kodu.

Nakon instaliranja date-fns-a s npm-om, uvezite paket u svoj program pomoću funkcije require:

konst { format, dodaj dane } = zahtijevati('datum-fns');

Date-fns je modularan. Sadrži mnogo funkcija kojima možete pristupiti destrukturiranjem paketa, kao što je prikazano u gornjem bloku koda. Kod uvozi samo format i funkcije addDays iz biblioteke date-fns.

Evo primjera kako koristiti obje te funkcije:

konst danas = noviDatum();
konst formattedDate = format (danas, 'gggg-MM-dd');
konzola.log (formatirani datum);

konst sutra = format (dodaj dane (danas, 1), 'gggg-MM-dd');
konzola.log (sutra);

Ovaj program demonstrira korištenje date-fns biblioteke u JavaScriptu za formatiranje i manipuliranje datumima.

Stvara novi Datum objekt koji predstavlja trenutni datum. Formatira trenutni datum pomoću format funkcija iz biblioteke date-fns.

Zatim koristi addDays za stvaranje novog objekta Datum koji predstavlja sutrašnji datum, formatira ga pomoću format funkciju i bilježi trenutni i sutrašnji datum na konzolu u "gggg-MM-dd" format.

Loša strana korištenja Date-fns-a je ta što ne pruža podršku za vremensku zonu. Umjesto toga, koristi zasebnu biblioteku za rad s vremenskim zonama pomoću pomoćnih funkcija.

Day.js, još jedna vrlo lagana biblioteka, dobar je izbor ako tražite nepromjenjivu, manju, bržu alternativu Moment.js.

Možete instalirati Day.js kao paket u svoj JavaScript projekt pokretanjem sljedeće naredbe npm:

npm instalirati dayjs

Da biste uvezli Day.js u svoj projekt nakon instalacije, možete koristiti sljedeći kod:

konst dayjs = zahtijevati('dayjs')

Evo nekih osnovnih funkcija i metoda dostupnih u Day.js

konst sada = dayjs();

konst datum = dayjs('2023-03-23', 'GGGG-MM-DD');

konst mjesec = datum.mjesec();

konst formattedDate = date.format('MMMM D, GGGG');

konst nextWeek = date.add(1, 'tjedan');

Gornji kod stvara novi Day.js objekt koji predstavlja trenutni datum i vrijeme, analizira niz datuma prilagođenim formatom i dobiva mjesec iz datum varijabla. Također pokazuje kako formatirati i dodati instanci datuma.

Kao i Date-fns, Day.js ne može sam pružiti podršku za vremensku zonu. Day.js koristi sustav dodataka, što ga čini zbunjujućim za korištenje.

Od obuhvaćenih paketa, Day.js je najsličniji Moment.js. To olakšava prebacivanje između to dvoje ako je potrebno.

Odabir prave biblioteke za vašu aplikaciju

Odabir odgovarajuće biblioteke datuma i vremena za vašu JavaScript aplikaciju važna je odluka koja može imati veliki utjecaj na kvalitetu i mogućnost održavanja vašeg koda.

Svaka od biblioteka o kojima se ovdje govori ima svoje prednosti i slabosti, stoga je važno pažljivo procijeniti svoje zahtjeve prije donošenja odluke.