JavaScript-päivämäärä nyt - Kuinka saada nykyinen päivämäärä JavaScriptiin

Monissa luomissasi sovelluksissa on jonkinlainen päivämääräkomponentti, olipa kyseessä resurssin luomispäivä tai toiminnan aikaleima.

Päivämäärän ja aikaleiman muotoilun käsitteleminen voi olla uuvuttavaa. Tässä oppaassa opit saamaan nykyisen päivämäärän eri muodoissa JavaScript-muodossa.

JavaScriptin päivämääräobjekti

JavaScriptissa on sisäänrakennettu Dateobjekti, joka tallentaa päivämäärän ja kellonajan ja tarjoaa menetelmät niiden käsittelemiseksi.

Voit luoda Dateobjektista uuden ilmentymän käyttämällä newavainsanaa:

const date = new Date();

DateObjekti sisältää Numberjoka edustaa millisekuntia kulunut Epoch, että 1. tammikuuta 1970 alkaen.

Voit välittää päivämäärämerkkijonon Daterakentajalle objektin luomiseksi määritetylle päivämäärälle:

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

Jos haluat saada kuluvan vuoden, käytä objektin getFullYear()ilmentymämenetelmää Date. getFullYear()Metodi palauttaa vuoden määrättynä ajankohtana Daterakentaja:

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

Vastaavasti on olemassa menetelmiä nykyisen kuukauden ja kuluvan kuukauden saamiseksi:

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

getDate()Menetelmä palauttaa nykyisen päivä (1-31).

getMonth()Metodi palauttaa kuukauden tiettynä päivämääränä. Yksi huomautettava getMonth()menetelmä on, että se palauttaa 0-indeksoidut arvot (0-11), missä 0 on tammikuu ja 11 joulukuu. Tästä syystä lisätään yksi kuukauden arvon normalisoimiseksi.

Päivämäärä nyt

now()on Datekohteen staattinen menetelmä . Se palauttaa arvon millisekunteina, joka edustaa aikakauden jälkeen kulunutta aikaa. Voit siirtää now()menetelmästä palautetut millisekunnit Daterakentajaan uuden Dateobjektin ilmentämiseksi :

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

Päivämäärän muotoilu

Voit muotoilla päivämäärän useaan muotoon (GMT, ISO ja niin edelleen) Dateobjektin menetelmillä .

toDateString()Metodi palauttaa päivämäärän ihmisen luettavassa muodossa:

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

toISOString()Metodi palauttaa päivämäärän, joka seuraa ISO 8601 laajennettu muoto:

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

toUTCString()Metodi palauttaa päivämäärä UTC aikavyöhykkeen muodossa:

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

toLocaleDateString()Metodi palauttaa päivämäärän paikkakunnalla herkkä muodossa:

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

DateMenetelmien täydellinen viite löytyy MDN-dokumentaatiosta.

Mukautettu päivämäärän muotoilutoiminto

Edellä olevassa osiossa mainittujen muotojen lisäksi sovelluksellasi voi olla erilainen muoto tiedoille. Se voi olla muodossa yy/dd/mmtai yyyy-dd-mmmuodossa tai jotain vastaavaa.

Tämän ongelman ratkaisemiseksi olisi parempi luoda uudelleenkäytettävä toiminto, jotta sitä voidaan käyttää useissa projekteissa.

Joten luodaan tässä osassa apufunktio, joka palauttaa päivämäärän funktion argumentissa määritetyssä muodossa:

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

Sinun on korvattava merkkijonot "mm", "dd", "yy" vastaavilla kuukausi-, päivä- ja vuosi-arvoilla argumentissa syötetystä muotomerkkijonosta.

Voit tehdä sen käyttämällä replace()alla kuvattua menetelmää:

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

Mutta tämä johtaa paljon menetelmien ketjuun ja vaikeuttaa ylläpitoa, kun yrität tehdä toiminnosta joustavamman:

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

Ketjutusmenetelmien sijasta voit käyttää replace()menetelmällä säännöllistä lauseketta .

Luo ensin objekti, joka edustaa alimerkkijonon avain-arvo-paria ja sen vastaavaa arvoa:

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

Käytä seuraavaksi merkkijonoja säännöllisen lausekkeen avulla:

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

Koko toiminto näyttää tältä:

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]) }

Voit myös lisätä aikaleimojen muotoilun mahdollisuuden toimintoon.

Johtopäätös

Toivon, että ymmärrät Dateobjektin nyt paremmin JavaScriptissä. Voit käyttää myös muita kolmannen osapuolen kirjastoja, kuten datesjja momentkäsittelemään päivämääriä sovelluksessasi.

Pysy turvassa ja jatka hälinästä seuraavaan kertaan asti.