JavaScript Date Now - Kako dobiti trenutni datum u JavaScript-u

Mnoge aplikacije koje izradite imat će neku vrstu datumske komponente, bilo da je to datum stvaranja resursa ili vremenska oznaka aktivnosti.

Suočavanje s oblikovanjem datuma i vremenske oznake može biti iscrpljujuće. U ovom ćete vodiču naučiti kako dobiti trenutni datum u različitim formatima u JavaScript-u.

JavaScript-ov objekt datuma

JavaScript ima ugrađeni Dateobjekt koji pohranjuje datum i vrijeme i pruža metode za rukovanje njima.

Da biste stvorili novu instancu Dateobjekta, upotrijebite newključnu riječ:

const date = new Date();

DateObjekt sadrži Numberkoji predstavlja milisekundi prošlo od epohe, koja je 1 siječnja 1970.

DateKonstruktoru možete proslijediti niz datuma da biste kreirali objekt za navedeni datum:

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

Da biste dobili tekuću godinu, upotrijebite getFullYear()metodu instance Dateobjekta. getFullYear()Metoda vraća godinu određenog datuma u Datekonstruktora:

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

Slično tome, postoje metode za dobivanje tekućeg dana u mjesecu i tekućeg mjeseca:

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

getDate()Metoda vraća trenutni dan u mjesecu (1-31).

getMonth()Metoda vraća mjesec na određeni datum. getMonth()Ono što treba napomenuti u vezi s metodom jest da vraća 0-indeksirane vrijednosti (0-11) gdje je 0 za siječanj, a 11. za prosinac. Stoga dodavanje 1 za normalizaciju mjesečne vrijednosti.

Datum sada

now()je statička metoda Dateobjekta. Vraća vrijednost u milisekundama koja predstavlja vrijeme proteklo od epohe. Možete proslijediti milisekunde vraćene iz now()metode u Datekonstruktor da instancirate novi Dateobjekt:

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

Oblikovanje datuma

Datum možete formatirati u više formata (GMT, ISO i tako dalje) pomoću metoda Dateobjekta.

toDateString()Metoda vraća datum u ljudskom čitljivom obliku:

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

toISOString()Metoda vraća datum koji slijedi ISO 8601 Extended Format:

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

toUTCString()Metoda vraća datum u UTC Timezone formatu:

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

toLocaleDateString()Metoda vraća datum u formatu mjestu osjetljiv na:

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

Cjelovite reference za Datemetode možete pronaći u MDN dokumentaciji.

Prilagođena funkcija formatiranja datuma

Osim formata spomenutih u gornjem odjeljku, vaša aplikacija može imati i drugačiji format podataka. Može biti u yy/dd/mmili yyyy-dd-mmformatu, ili nešto slično.

Za rješavanje ovog problema bilo bi bolje stvoriti funkciju za višekratnu upotrebu kako bi se mogla koristiti u više projekata.

Dakle, u ovom odjeljku stvorimo uslužnu funkciju koja će vratiti datum u formatu navedenom u argumentu funkcije:

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

Morate zamijeniti nizove "mm", "dd", "yy" s odgovarajućim vrijednostima mjeseca, dana i godine iz niza formata prosljeđenih u argumentu.

Da biste to učinili, možete koristiti replace()metodu prikazanu dolje:

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

Ali to će dovesti do velikog lanca metoda i otežat će ga održavanje dok pokušavate učiniti funkciju fleksibilnijom:

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

Umjesto ulančavanja metoda, pomoću metode možete upotrijebiti regularni izraz replace().

Prvo stvorite objekt koji će predstavljati par ključ / vrijednost podniza i njegovu odgovarajuću vrijednost:

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

Zatim upotrijebite regularni izraz za podudaranje i zamjenu nizova:

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

Kompletna funkcija izgleda ovako:

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

U funkciju možete dodati i mogućnost formatiranja vremenskih žigova.

Zaključak

Nadam se da sada bolje razumijete Dateobjekt u JavaScript-u. Također možete koristiti druge biblioteke trećih strana poput datesji momentza obradu datuma u vašoj aplikaciji.

Do sljedećeg puta, budite sigurni i nastavite žuriti.