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 Date
objekt, der gemmer dato og klokkeslæt og giver metoder til håndtering af dem.
For at oprette en ny forekomst af Date
objektet skal du bruge new
nøgleordet:
const date = new Date();
Den Date
genstand indeholder en Number
, der repræsenterer millisekunder gået siden Epoch, der den 1. januar 1970.
Du kan sende en datostreng til Date
konstruktø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 Date
konstruktø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 Date
objektet. 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 Date
konstruktøren for at starte et nyt Date
objekt:
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 Date
objektets 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 Date
metoderne 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/mm
eller yyyy-dd-mm
format 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 Date
objektet i JavaScript. Du kan også bruge andre tredjepartsbiblioteker som datesj
og moment
til at håndtere datoer i din applikation.
Indtil næste gang skal du være sikker og fortsætte med at trænge.