Gå utöver JavaScripts inbyggda datum- och tidsfunktioner med ett av dessa ersättningsbibliotek.

JavaScripts inbyggda stöd för datumhantering är användbart, men det kan vara besvärligt att använda. Komplexa operationer som tidszonkonverteringar och datumformatering är ofta utmanande.

Som tur är finns flera paket tillgängliga som gör arbetet med datum och tider i JavaScript mindre stressande. Här får du lära dig om några av dessa paket och hur du kan komma igång med att arbeta med dessa paket.

När det gäller att arbeta med datum och tider, det inbyggda JavaScript Date-objektet har begränsad funktionalitet.

Moment.js, ett JavaScript-bibliotek, introducerade många funktioner som inte är tillgängliga i det inbyggda Date-objektet. Som ett resultat har det blivit det bästa biblioteket för att arbeta med datum och tider.

För att installera Moment.js med npm, kör följande kommando från din projektkatalog:

npm Installera ögonblick

Efter installationen kan du importera Moment.js till ditt projekt och utföra operationer med biblioteket:

instagram viewer
konst ögonblick = behöva('ögonblick');
konst nu = ögonblick();
konst nowString = now.format('ÅÅÅÅ-MM-DD HH: mm: ss');

trösta.logga(`Det aktuella datumet och tiden är ${nowString}`);

Detta kodavsnitt importerar Moment.js-biblioteket och skapar ett momentobjekt med det aktuella datumet och tiden med ögonblick() fungera. Den visar sedan hur man formaterar det skapade datumobjektet som en sträng med formatera() metod, som tar ett datum/tid-format som argument.

Du kan också använda det här biblioteket för att lägga till och subtrahera tidsintervall:

konst addTenMinutes = moment().add(10, 'minuter');
trösta.logga(`${addTenMinutes.format('h: mm a')}`);

konst subtraheraTwoDays = moment().subtrahera(2, "dagar");
trösta.logga(`${subtractTwoDays.format('dddd, MMMM Gör ÅÅÅÅ')}`);

Programmet loggar två variabler till konsolen, i olika format. Den första, addTenMinutes, innehåller resultatet av att lägga till 10 minuter till aktuellt datum och tid. Den andra, subtraheraTwoDays, har aktuellt datum- och tidsvärde med två dagar subtraherade från det.

Moment.js kan utföra andra operationer som att kontrollera efter skottår och konvertera från ett datumformat till ett annat.

Det är viktigt att notera att Moment.js inte längre underhålls av sitt kärnutvecklarteam. Utvecklarna rekommenderar att du använder ett alternativ som Luxon.js.

Luxon.js är ett robust och modernare JavaScript-bibliotek för att arbeta med datum. Ett alternativ till Moment.js, det tar itu med begränsningar av det äldre biblioteket som förändringar.

Du kan installera Luxon med npm och sedan importera dess Datum Tid klass i ditt Node.js-projekt med hjälp av behöva() fungera:

konst { DateTime } = behöva("luxon");

I Luxon hänvisar DateTime-objekt till tidsinstanser som går hela vägen ner till millisekunder.

Du kan skapa nya Datum Tid objekt och få tillgång till deras komponenter, som år, månad, minut och sekund:

konst nu = DateTime.now();
konst år = nu.år;
konst minut = nu.minut;
konst andra = nu.andra;

Denna kod skapar en ny Datum Tid objekt som representerar aktuellt datum och tid med hjälp av nu() metod. Den kommer sedan åt datumets komponenter med hjälp av år, minut, och andra egenskaper.

En stor skillnad mellan Luxon.js och Moment.js är dess oföränderliga karaktär. Alla DateTime-objekt är oföränderliga i Luxon, vilket innebär att du inte kan ändra DateTime-egenskaper. Istället kan du skapa nya DateTime-instanser från befintliga.

Till exempel:

konst nu = DateTime.now();
konst imorgon = nu.plus({ dagar: 1 });

Denna kod skapar en ny Datum Tid objekt namnges i morgon baserat på nu objekt, med hjälp av plus metoden och skickar den ett värde på 1 dag som ett argument. Plusmetoden skapar ett nytt DateTime-objekt med det angivna antalet dagar läggs till det ursprungliga objektet.

En annan fördel med Luxon.js är dess pålitliga tidszonsstöd, vilket är viktigt för att arbeta med datum och tider i moderna webbapplikationer. Biblioteket använder Internationalization API i moderna webbläsare för att ge korrekt tidszonsstöd.

En av nackdelarna med Luxon.js är dock dess begränsade gemenskapsresurser.

Date-fns är ett mycket lätt JavaScript-bibliotek designat för att arbeta med datum och tider. Det bygger på det inbyggda JavaScript-objektet.

Date-fns använder funktionella programmeringstekniker och innehåller en oföränderlig funktion, som gör arbetet med datum enklare och minskar sannolikheten för buggar i din kod.

Efter att ha installerat date-fns med npm, importera paketet till ditt program med funktionen require:

konst { format, addDays } = behöva('date-fns');

Date-fns är modulärt. Den innehåller många funktioner som du kan komma åt genom att destrukturera paketet, som visas i kodblocket ovan. Koden importerar endast formatet och addDays-funktionerna från date-fns-biblioteket.

Här är ett exempel på hur man använder båda dessa funktioner:

konst idag = nyDatum();
konst formattedDate = format (idag, "åååå-MM-dd");
trösta.log (formaterat datum);

konst morgon = format (lägg till dagar (idag, 1), "åååå-MM-dd");
trösta.log (i morgon);

Det här programmet visar att du använder date-fns-biblioteket i JavaScript för att formatera och manipulera datum.

Det skapar ett nytt Datum objekt som representerar det aktuella datumet. Den formaterar det aktuella datumet med hjälp av formatera funktion från date-fns-biblioteket.

Den använder sedan addDays funktion för att skapa ett nytt Date-objekt som representerar morgondagens datum, formaterar det med hjälp av formatera funktion och loggar både det aktuella datumet och morgondagens datum till konsolen i "åååå-MM-dd" format.

En nackdel med att använda Date-fns är att det inte ger tidszonstöd. Istället använder den ett separat bibliotek för att arbeta med tidszoner med hjälp av hjälpfunktioner.

Day.js, ett annat mycket lätt bibliotek, är ett bra val om du letar efter ett oföränderligt, mindre, snabbare alternativ till Moment.js.

Du kan installera Day.js som ett paket i ditt JavaScript-projekt genom att köra följande npm-kommando:

npm Installera dayjs

För att importera Day.js till ditt projekt efter installationen kan du använda följande kod:

konst dayjs = behöva("dayjs")

Här är några grundläggande funktioner och metoder tillgängliga i Day.js

konst nu = dayjs();

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

konst månad = date.month();

konst formattedDate = date.format("MMMM D, ÅÅÅÅ");

konst nästa vecka = date.add(1, 'vecka');

Ovanstående kod skapar ett nytt Day.js-objekt som representerar aktuellt datum och tid, analyserar en datumsträng med ett anpassat format och får månaden från datum variabel. Den visar också hur man formaterar och lägger till i en datuminstans.

Precis som Date-fns kan Day.js inte tillhandahålla tidszonstöd på egen hand. Day.js använder ett plugin-system, vilket gör det förvirrande att använda.

Av de paket som omfattas är Day.js mest lik Moment.js. Detta gör det lättare att växla mellan de två om du behöver.

Att välja rätt bibliotek för din app

Att välja rätt datum- och tidsbibliotek för din JavaScript-applikation är ett viktigt beslut som kan ha stor inverkan på kvaliteten och underhållbarheten av din kod.

Vart och ett av de bibliotek som diskuteras här har sina styrkor och svagheter, så det är viktigt att noggrant utvärdera dina krav innan du fattar ett beslut.