JavaScript-dato nu - Sådan får du den aktuelle dato i JavaScript

Mange applikationer, du bygger, vil have en slags datakomponent, hvad enten det er oprettelsesdatoen for en ressource eller tidsstemplet for en aktivitet.

At håndtere dato- og tidsstempelformatering kan være udmattende. I denne vejledning lærer du, hvordan du får den aktuelle dato i forskellige formater i JavaScript.

JavaScript's datoobjekt

JavaScript har et indbygget Dateobjekt, der gemmer dato og klokkeslæt og giver metoder til håndtering af dem.

For at oprette en ny forekomst af Dateobjektet skal du bruge newnøgleordet:

const date = new Date();

Den Dategenstand indeholder en Number, der repræsenterer millisekunder gået siden Epoch, der den 1. januar 1970.

Du kan sende en datostreng til Datekonstruktøren for at oprette et objekt til den angivne dato:

const date = new Date('Jul 12 2011');

Brug objektets getFullYear()instansmetode for at få det aktuelle år Date. Den getFullYear()metode returnerer året for den angivne dato i Datekonstruktøren:

const currentYear = date.getFullYear(); console.log(currentYear); //2020

På samme måde er der metoder til at få den aktuelle dag i måneden og den aktuelle måned:

const today = date.getDate(); const currentMonth = date.getMonth() + 1; 

Den getDate()metode returnerer den aktuelle dag i måneden (1-31).

Den getMonth()metode returnerer måneden for den angivne dato. Et punkt at bemærke om getMonth()metoden er, at den returnerer 0-indekserede værdier (0-11), hvor 0 er for januar og 11 for december. Derfor tilføjes 1 for at normalisere månedens værdi.

Dato nu

now()er en statisk metode til Dateobjektet. Den returnerer værdien i millisekunder, der repræsenterer den forløbne tid siden epoken. Du kan overføre de millisekunder, der returneres fra now()metoden, til Datekonstruktøren for at starte et nyt Dateobjekt:

const timeElapsed = Date.now(); const today = new Date(timeElapsed);

Formatering af datoen

Du kan formatere datoen i flere formater (GMT, ISO osv.) Ved hjælp af Dateobjektets metoder .

Den toDateString()metode returnerer datoen i et menneskeligt læsbart format:

today.toDateString(); // "Sun Jun 14 2020"

Den toISOString()metode returnerer den dato, der følger ISO 8601 Udvidet Format:

today.toISOString(); // "2020-06-13T18:30:00.000Z"

Den toUTCString()metode returnerer datoen UTC tidszone format:

today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"

Den toLocaleDateString()metode returnerer datoen i et lokalområde-følsom format:

today.toLocaleDateString(); // "6/14/2020"

Du kan finde den komplette reference til Datemetoderne i MDN-dokumentationen.

Brugerdefineret datoformateringsfunktion

Bortset fra de formater, der er nævnt i ovenstående afsnit, kan din applikation have et andet format til data. Det kunne være i yy/dd/mmeller yyyy-dd-mmformat eller noget lignende.

For at tackle dette problem ville det være bedre at oprette en genanvendelig funktion, så den kan bruges på tværs af flere projekter.

Så i dette afsnit, lad os oprette en hjælpefunktion, der returnerer datoen i det format, der er angivet i funktionsargumentet:

const today = new Date(); function formatDate(date, format) { // } formatDate(today, 'mm/dd/yy');

Du skal erstatte strengene "mm", "dd", "åå" med de respektive måned-, dag- og årværdier fra den formatstreng, der er sendt i argumentet.

For at gøre det kan du bruge replace()metoden som vist nedenfor:

format.replace('mm', date.getMonth() + 1);

Men dette vil føre til en masse metodekædning og gøre det vanskeligt at vedligeholde, når du prøver at gøre funktionen mere fleksibel:

format.replace('mm', date.getMonth() + 1) .replace('yy', date.getFullYear()) .replace('dd', date.getDate());

I stedet for at sammenkæde metoder kan du bruge regulært udtryk med replace()metoden.

Opret først et objekt, der repræsenterer et nøgleværdipar af understrengen og dens respektive værdi:

const formatMap = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() };

Brug derefter regulært udtryk til at matche og erstatte strengene:

formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);

Den komplette funktion ser sådan ud:

function formatDate(date, format) { const map = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() } return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]) }

Du kan også tilføje muligheden for at formatere tidsstempler i funktionen.

Konklusion

Jeg håber, du nu har en bedre forståelse af Dateobjektet i JavaScript. Du kan også bruge andre tredjepartsbiblioteker som datesjog momenttil at håndtere datoer i din applikation.

Indtil næste gang skal du være sikker og fortsætte med at trænge.