Pomocou new Date() vytvorte nový objekt Date obsahujúci aktuálny dátum a čas.

poznač si to Dátum() volané bez argumentov je ekvivalentné nový dátum(Date.now()) .

Keď už máte objekt dátumu, môžete použiť ktorýkoľvek z niekoľkých dostupné metódy na získanie jeho vlastností (napr. getFullYear() na získanie 4-ciferného roku).

Nasleduje niekoľko bežných metód dátumu.

Získajte aktuálny rok

var rok = (new Date()).getFullYear(); denník konzoly (rok); // Vzorový výstup: 2016

Získajte aktuálny mesiac

var mesiac = (new Date()).getMonth(); konzolový denník (mesiac); // výstup vzorky: 0

Všimnite si, že 0 = január. Je to preto, že mesiace sa líšia od 0 predtým 11 , preto je často žiaduce pridať do indexu +1.

Získajte aktuálny deň

varday = (new Date()).getDate(); konzolový denník (deň); // vzorový výstup: 31

Získajte aktuálnu hodinu

var hodiny = (new Date()).getHours(); denník konzoly (hodiny); // výstup vzorky: 10

Získajte aktuálne minúty

var minúty = (new Date()).getMinutes(); denník konzoly (minúty); // výstup vzorky: 39

Získajte aktuálne sekundy

var sekund = (new Date()).getSeconds(); denník konzoly (druhý); // výstup vzorky: 48

Získajte aktuálne milisekúndy

Ak chcete získať milisekúnd (0 až 999) inštancie objektu Date, použite metódu getMilliseconds.

var milisekundy = (new Date()).getMilliseconds(); log konzoly (milisekundy); // Výstup: milisekundy práve teraz

Preveďte aktuálny čas a dátum na ľudsky čitateľný reťazec

varnow = new Date(); // prevod dátumu na reťazec vo formáte časového pásma UTC: console.log(now.toUTCString()); // Výstup: Streda, 21. júna 2017 09:13:01 GMT

Statická metóda Date.now() vráti počet milisekúnd od 1. januára 1970 00:00:00 UTC. Ak chcete získať počet milisekúnd, ktoré odvtedy prešli pomocou inštancie objektu Date, použite jeho metódu getTime.

// získanie milisekúnd pomocou statickej metódy teraz z Date console.log(Date.now()); // získanie milisekúnd pomocou metódy getTime of Date inštancia console.log((new Date()).getTime());

Dátum a čas sú súčasťou nášho každodenného života, a preto zohrávajú významnú úlohu v programovaní. V JavaScripte možno budete musieť pri vytváraní webovej lokality pridať kalendár, cestovný poriadok vlakov alebo rozhranie na plánovanie stretnutí. Tieto aplikácie by mali zobrazovať vhodné časy na základe aktuálneho časového pásma používateľa alebo vykonávať výpočty súvisiace s príletom a odletom lietadla alebo časom začiatku a konca udalosti. Okrem toho možno budete musieť použiť JavaScript na odosielanie denných prehľadov v konkrétnych časoch alebo na filtrovanie (napríklad na nájdenie reštaurácií, ktoré sú otvorené v určitých časoch).

dátumový objekt

Dátum je vstavaný objekt JavaScript, ktorý ukladá dátum a čas. Poskytuje množstvo vstavaných metód na formátovanie a manipuláciu s týmito údajmi.

V predvolenom nastavení nová inštancia dátumu bez argumentov vytvorí objekt s aktuálnym dátumom a časom podľa systémové nastavenia aktuálny počítač.

Skúste napríklad priradiť aktuálny dátum premennej. Vytvorte súbor now.js.

// Nastavenie premennej na aktuálny dátum a čas
const now = new Date();
// zobrazenie výstupu
teraz;
Streda 18. októbra 2017 12:41:34 GMT+0000 (UTC)

Výstupom je dátumový reťazec obsahujúci nasledujúce údaje:

Dátum a čas sú rozdelené a zobrazené spôsobom, ktorý je ľahko čitateľný.

JavaScript však interpretuje dátum na základe časovej pečiatky Unixu, čo je hodnota pozostávajúca z počtu milisekúnd od polnoci 1. januára 1970. Časovú pečiatku môžete získať pomocou metódy getTime().

// Získanie aktuálnej časovej pečiatky
now.getTime();
1508330494000

Veľké číslo, ktoré sa zobrazuje vo výstupe ako aktuálna časová pečiatka, je počet milisekúnd, ktoré uplynuli od polnoci 1. januára 1970 do 18. októbra 2017.

Nulový čas (alebo čas epochy) je reprezentovaný dátumovým reťazcom 01 Január, 1970 00:00:00 svetového času (UTC) a časovou pečiatkou 0. Môžete to otestovať v prehliadači vytvorením novej premennej v epoch.js a priradíte mu novú inštanciu Date , na základe časovej pečiatky 0.

// Priraďte časovú značku 0 novej premennej
const epochTime = new Date(0);
epochTime;
1. január 1970 00:00:00 svetového času (UTC)

Ako štandard na meranie času počítačmi bol zvolený nulový čas a táto metóda sa používa v JavaScripte. Je dôležité porozumieť časovým pečiatkam a reťazcom dátumov, pretože tieto pojmy možno použiť v závislosti od nastavení a účelu aplikácie.

Teraz viete, ako vytvoriť novú inštanciu dátumu na základe aktuálneho času a časovej pečiatky. V JavaScripte sú celkovo štyri formáty dátumu. Okrem predvoleného aktuálneho času a časovej pečiatky môžete použiť aj reťazec dátumu alebo zadať konkrétny dátum a čas.

Demonštrovať rôznymi spôsobmi odkazy na konkrétny dátum, skúste vytvoriť nové objekty Date, ktoré predstavujú 4. júl 1776, 12:30 GMT tromi rôznymi spôsobmi.

// metóda časovej pečiatky
nový dátum(-6106015800000);
// metóda reťazca dátumu
nový dátum("31. január 1980 12:30");
// metóda dátumu a času
new Date(1776, 6, 4, 12, 30, 0, 0);

Všetky tieto príklady predstavujú rovnakú informáciu o dátume a čase tromi rôznymi spôsobmi.

Ako vidíte, metóda časovej pečiatky má záporné číslo; akýkoľvek dátum pred nulovým časom bude reprezentovaný ako záporné číslo.

V treťom príklade sú sekundy a milisekúndy reprezentované 0. Ak vám pri vytváraní objektu Date chýbajú nejaké údaje, musíte ich priradiť k 0. Chýbajúce údaje nemožno preskočiť, pretože poradie časových údajov v reťazci zmeniť. Treba tiež poznamenať, že mesiac júl je tu označený ako 6, a nie ako 7. Je to preto, že odpočítavanie začína od 0, nie od 1. Viac o tom v ďalšej časti.

Načítavanie dátumu pomocou get

Akonáhle budete mať rande, môžete pristupovať ku všetkým jeho komponentom pomocou rôznych vstavaných metód. Metódy vrátia každú časť dátumu vzhľadom na miestne časové pásmo. Každá z týchto metód začína get a vracia relatívne číslo. Nižšie je podrobná tabuľka metód get pre objekt Date.

Dátum Čas Metóda Rozsah Príklad
rok getFullYear() YYYY 1970
mesiac getMonth() 0-11 0 = január
deň v mesiaci getDate() 1-31 1 = 1. deň v mesiaci
Deň v týždni getDay() 0-6 0 = nedeľa
hodina getHours() 0-23 0 = polnoc
Minúta getMinutes() 0-59
Po druhé getSeconds() 0-59
milisekúnd getMilliseconds() 0-999
časová značka getTime()

// Inicializujte novú inštanciu narodenín
const birthday = new Date(1980, 6, 31);

Teraz môžete použiť všetky metódy na extrahovanie každej zložky dátumu.

narodeniny.getFullYear(); // 1980
narodeniny.getMesiac(); // 6
narodeniny.getDate(); // 31
narodeniny.getDay(); // štyri
narodeniny.getHours(); // 0
narodeniny.getMinutes(); // 0
narodeniny.getSeconds(); // 0
narodeniny.getMillisekundy(); // 0
narodeniny.getTime(); // 333849600000 (pre GMT)

Niekedy môže byť potrebné extrahovať iba časť dátumu a vstavané metódy získania vám s tým pomôžu.

Môžete napríklad porovnať dnešný dátum s 3. októbrom a zistiť, či je 3. október alebo nie.

// Získajte dnešný dátum
const today = new Date();
// Porovnajte dnešok s 3. októbrom
if (today.getDate() === 3 && today.getMonth() === 9) (
console.log("Je 3. október.");
) inak (
console.log("Nie je 3. október.");
}
Nie je 3. október.

Vstavané metódy get vám umožňujú prístup k komponentom dátumu.

Zmena dátumu pomocou setu

Pre všetky vyššie uvedené metódy get existuje zodpovedajúca metóda množiny. Ak sa get používa na získanie konkrétneho komponentu dátumu, set sa používa na zmenu týchto komponentov. Nižšie je podrobná tabuľka metód nastavovania pre objekt Date.

Dátum Čas Metóda Rozsah Príklad
rok setFullYear() YYYY 1970
mesiac setMonth() 0-11 0 = január
deň v mesiaci setDate() 1-31 1 = 1. deň v mesiaci
Deň v týždni setDay() 0-6 0 = nedeľa
hodina setHours() 0-23 0 = polnoc
Minúta setMinutes() 0-59
Po druhé setSeconds() 0-59
milisekúnd setMilliseconds() 0-999
časová značka nastav čas() Počet milisekúnd od nulového času

Tieto metódy množiny možno použiť na zmenu jedného alebo viacerých komponentov dátumu. Môžete napríklad zmeniť rok v premennej narodeniny na 1997.

// Zmena roku dátumu narodenia
narodeniny.setFullYear(1997);
narodeniny;
Št. júl 31 1997 00:00:00 GMT+0000 (UTC)

Keď teraz zavoláte premennú narodeniny, neuvidíte rok 1980, ale rok 1997.

Vstavané metódy množiny vám umožňujú meniť rôzne časti objektu Date.

Metódy UTC

Vyššie opísané metódy get získavajú komponenty dátumu na základe miestne nastaveniačasové pásmo používateľa. Ak chcete zvýšiť kontrolu nad dátumami a časmi, môžete použiť metódy getUTC, ktoré fungujú rovnako ako metódy get, ale počítajú čas na základe štandardu UTC (Coordinated Universal Time). Nasleduje tabuľka metód UTC pre objekt Date v JavaScripte.

Dátum Čas Metóda Rozsah Príklad
rok getUTCFullYear() YYYY 1970
mesiac getUTCMonth() 0-11 0 = január
deň v mesiaci getUTCDate() 1-31 1 = 1. deň v mesiaci
Deň v týždni getUTCDay() 0-6 0 = nedeľa
hodina getUTCHours() 0-23 0 = polnoc
Minúta getUTCMinutes() 0-59
Po druhé getUTCSecons() 0-59
milisekúnd getUTCMilisekundy() 0-999

Ak chcete skontrolovať rozdiel medzi miestnymi získať metódy a získajte metódy UTC, spustite nasledujúci kód.

// Priraďte aktuálny čas premennej
const now = new Date();
// Tlač miestnych časových pásiem a časových pásiem UTC
console.log(now.getHours());
console.log(now.getUTCHours());

Tento kód vytlačí aktuálny čas a čas v časovom pásme UTC. Ak sa momentálne nachádzate v časovom pásme UTC, potom čísla, ktoré program zobrazí, budú rovnaké.

UTC poskytuje medzinárodný časový štandard, a preto môže podporovať kód podľa časových pásiem, ak je to potrebné vo vašom programe.

Záver

V tomto návode ste sa naučili, ako vytvoriť inštanciu objektu Date, ako používať jeho vstavané metódy na prístup a úpravu komponentov daného dátumu. Viac detailné informácie o čase a dátume v JavaScripte nájdete na Mozilla Developer Network.

Vedieť pracovať s dátumami je dôležité pre mnoho bežných úloh v JavaScripte, od generovania pravidelných správ až po zobrazovanie dátumov a plánov v správnom časovom pásme.

Značky:

Získanie aktuálneho dátumu v JavaScripte je veľmi jednoduché. Na to slúži objekt Date. Jeho syntax je pomerne jednoduchá a názvy metód sú intuitívne. V nižšie uvedených príkladoch vám ukážem, ako pracovať s objektom Date ( Nový dátum JavaScriptu) získate aktuálny rok, mesiac, deň a čas s presnosťou na milisekundu!

Získanie aktuálneho dátumu:

Ak chcete získať aktuálny dátum v JavaScripte, použite kľúčové slovo new na vytvorenie novej inštancie objektu Date.

var date = new Date(); konzolový denník (dátum);

Tento kód vytlačí do konzoly nasledujúce informácie:

//Tue Feb 02 2016 15:46:56 GMT-0500 (východný štandardný čas)

Zobrazuje aktuálny deň v týždni, aktuálny mesiac, deň v mesiaci, rok a dokonca aj aktuálny čas v 24-hodinovom formáte. Fragment" GMT" znamená čas GMT a " -0500 “ je rozdiel v časových pásmach medzi miestnym časom a GMT.

Citát z Wikipédie: „Greenwichský stredný čas (GMT) GMT) je stredný slnečný čas na Kráľovskom observatóriu, Greenwich, Londýn." Je to spojené s UTC (UTC). « Východný Štandardný Čas Znak ' v zobrazenej hodnote dátumu odkazuje na časové pásmo vášho prehliadača alebo počítača.

* Upozorňujeme, že GMT a UTC sa líšia. Hodnoty UTC budeme brať do úvahy v minútach.

* Upozorňujeme tiež, že dátum v JavaScripte je definovaný časom v milisekundách, ktorý uplynul od polnoci 1. januára 1970 v UTC. Jeden deň je 86 400 000 milisekúnd. Rozsah objektu Date je -100 000 000 dní až 100 000 000 dní v porovnaní s 1. januárom 1970 UTC.

* Hodnoty získané vyššie uvedeným spôsobom závisia od systémových nastavení vášho zariadenia. Ak zmeníte nastavenia hodín počítača, zmení sa aj čas vrátený touto metódou.

Dobre, nové formáty dátumu JavaScript sme odstránili a teraz sme pripravení ísť ďalej!

Získanie dňa v týždni:

Ak chcete zistiť deň v týždni, použite metódu objekt JavaScript Dátum getDay() :

varday = date.getDay(); konzolový denník (deň);

*Všimnite si, že dni v týždni sú očíslované od 0 do 6, nedeľa = 0, pondelok = 1, utorok = 2 atď.

Získajte mesiac:

Ak chcete získať aktuálny mesiac aktuálneho roka, použite metódu getMonth(). Predtým som povedal, že názvy metód sú intuitívne!

var mesiac = date.getMonth(); konzolový denník (mesiac); //jeden

* Všimnite si, že rovnako ako dni v týždni sa mesiace vracajú v číselnom formáte od 0 do 11; Január = 0, február = 1, marec = 2 atď.

Získanie dňa v mesiaci:

Ak chcete získať deň v mesiaci, môžete použiť metódu GetDate().

var dayOfMonth = date.getDate(); denník konzoly (deň v mesiaci); //2

* Metóda GetDate() vracia dni v mesiaci očíslované od 1 do 31; číslo 1 zodpovedá prvému dňu v mesiaci.

Získanie času:

Na získanie aktuálneho času sa používa metóda GetTime().

vartime = date.getTime(); konzolový denník (čas); //1454461242058

Vyzerá to... zvláštne... Čo to je? Zobrazí sa počet milisekúnd, ktoré uplynuli od 1. januára 1970 00:00:00 UTC. Tak koľko je to rokov?

1454461242058 ms / 31540000000 ms ročne = približne 46 rokov
1970 + 46 rokov = 2016

Skontrolujte, či:

var rok = date.getFullYear(); console.log(rok) //2016

Áno, toto je ono! Iba vypíšeme aktuálny dátum a čas pomocou JavaScriptu nový dátum.


Na prácu s dátumami a časmi v JavaScripte existuje špeciálny objekt - Dátum. Tento objekt podporujú takmer všetky verzie JavaScriptu a možno ho použiť bez ohľadu na problémy s kompatibilitou.

Dátum a čas v objekte Date nie sú uložené explicitne, ale ako vo väčšine programovacích jazykov, ako počet milisekúnd, ktoré uplynuli od zrodu Unixu, t.j. od 0000 hodín 1. januára 1970. Charakteristickým rysom objektu Date je, že všetky hodnoty rozsahu majú indexy založené na nule. To znamená, že január bude mať index 0 (mesiac #0) a december bude jedenásty mesiac namiesto dvanásteho. To isté platí pre dni v týždni, hodiny, minúty atď.

Vytvorenie objektu Date je veľmi jednoduché:

// aktuálny dátum-čas var date = new Date(); // dátum-čas z reťazca alebo čísla var date = new Date(date); // dátum-čas zo samostatných hodnôt var date = new Date(rok, mesiac, deň, hodina, minúta, sekunda, milisekunda);

Objekt Date má množstvo veľmi užitočných metód, s ktorými môžete pracovať jednotlivé zložky dátum-čas, ako aj skontrolovať správnosť a správny výstup dátumu v určenom formáte.

Metódy na získanie komponentov dátumu a času
getFullYear Vráti rok (napríklad 2011).
getYear Vráti rok. Účel metódy getYear je však rovnaký ako účel getFullYear túto metódu je zastaraný a neodporúča sa používať, pretože výsledky jej práce nie sú jednoznačné: pre rozsah dátumov od 1900 do 1999 metóda vracia číslo roku v storočí (dvojciferné, napríklad 77) a pre dátumy mimo tohto rozsahu je plná hodnota vrátené (štvormiestne, napríklad 2009).
getMonth Vráti mesiac.
getDate Vráti deň v mesiaci (číslo v mesiaci).
getHours Vráti hodinu.
getMinutes Vráti minútu.
getSeconds Vráti sekundu.
získať milisekundy Vráti milisekundu.
getDay Vráti číslo dňa v týždni.
getTime Vráti milisekundový posun uložený objektom.
Metódy na zmenu komponentov dátumu a času
setFullYear Nastavuje rok.
nastaviťRok Nastavuje rok. Účel metódy setYear je podobný účelu metódy setFullYear, ale táto metóda je zastaraná a zastaraná (rovnako ako metóda getYear).
nastaviť Mesiac Nastaví mesiac.
setDate Nastaví dátum v mesiaci (deň v mesiaci).
nastaviť hodiny Nastaví hodinu.
nastaviť minúty Nastavuje minútu.
setSeconds Nastaví druhú.
nastaviť milisekundy Nastavuje milisekundu.
nastav čas Nastaví milisekundový posun vzhľadom na 00:00:00 01/01/1970
Funkcie formátovania a výstupu dátumu a času
natiahnuť Vráti reťazcovú reprezentáciu dátumu a času.
toUTCString Vráti reťazcovú reprezentáciu dátumu a času prevedenú na čas UTC. Formát vráteného reťazca rešpektuje všetky internetové štandardy.
toGMTString Vráti reťazcovú reprezentáciu dátumu a času prevedenú na GMT (Greenwichský stredný čas). Formát vráteného reťazca rešpektuje všetky internetové štandardy.
toLocaleString Podobné ako toString, ale vracia reťazec reprezentujúci dátum a čas naformátovaný podľa miestneho nastavenia používateľa.
toTimeString Vráti reťazcovú reprezentáciu času (reťazec obsahuje iba čas).
toDateString Vráti reťazcovú reprezentáciu dátumu (reťazec obsahuje iba dátum).
toLocaleTimeString Podobné ako toTimeString, ale vráti reťazec reprezentujúci čas, naformátovaný podľa miestneho nastavenia používateľa.
toLocaleDateString Podobné ako toDateString, ale vráti reťazec reprezentujúci dátum naformátovaný podľa miestneho nastavenia používateľa.
Doplnkové funkcie
getTimezoneOffset Vráti posun miestneho času v počítači používateľa vzhľadom na UTC. Posun sa vráti v priebehu niekoľkých minút.
rozobrať Funkcia umožňuje skontrolovať správnosť dátumu a času zapísaného ako reťazec. Ak je reťazec správny, okamžite sa vytvorí objekt Date.

Objekt Date obsahuje aj množstvo metód na prácu s dátumami UTC. Tieto funkcie sú úplne podobné tým, ktoré už boli uvažované, ale obsahujú predponu „UTC“ v názve a pracujú iba s „univerzálnym“ časom: getUTCSeconds, setUTCFullYear atď.

Zvážte príklad práce s dátumami:

A tu je výstup tohto skriptu:


Ako vidíte, zobrazenie dátumu sa výrazne líši v závislosti od použitého formátu. Preto pri práci s dátumom a časom musíte dodržiavať niekoľko jednoduchých pravidiel:

1. Ak je to možné, použite formáty UTC alebo GMT. Toto je obzvlášť dôležité pri vytváraní distribuovaných riešení (napríklad klientov platobné systémy). Použitie spoločného referenčného času vám poskytne záruky (aj keď nie stopercentné), že vy aj váš vzdialený partner budete interpretovať prijaté údaje rovnakým spôsobom.

2. Lokalizovaný dátum a čas má zmysel používať len pri ich zobrazovaní používateľovi. Vo všetkých ostatných prípadoch je lepšie lokalizované údaje odmietnuť.

3. Ak stále musíte použiť miestny dátum a čas – nezabudnite vziať do úvahy posun miestneho času vzhľadom na referenčný čas (UTC alebo GMT).

Dodržiavanie týchto pravidiel vás ušetrí od väčšiny logických chýb a nedostatkov, čo znamená, že váš kód bude stabilnejší a kvalitnejší.

Ahojte všetci!
Často musím pracovať so štatistickými údajmi a tam sa toho veľa viaže na dátumy. Navyše ten istý dátum môže byť použitý na stránke v rôznych formátoch (napríklad strojový a ľudský). Myslím, že väčšina z vás má celkom dobrú predstavu o celom tom hroznom kóde, ktorý vzniká pri používaní objektu Date.
Ak chcete napríklad získať aktuálny dátum vo formáte DD.MM.RRRR, musíme urobiť nasledovné:
var d = new Date(), fd = d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear();
A keď je takýchto riadkov veľa? Je ľahké si zapamätať, že v javascripte sa mesiac začína od nuly, keď sa rozvíjate nielen na ňom? Alebo skutočnosť, že sú tu milisekúndy a nie sekundy, ako takmer všade na backende? Niektoré problémy môžete vyriešiť pomocou populárnej knižnice Moment.js, ktorá však funguje veľmi pomaly.
Predmetná knižnica tieto problémy rieši.
Ak máte záujem, odporúčam vám prečítať si túto krátku recenziu.

TempusJS je veľa syntaktického cukru v objekte Date, takže je veľmi rýchly. Samotná syntax knižnice je pomerne jednoduchá. Napríklad predchádzajúci príklad by sa dal napísať takto:
var fd = tempos().format("%d.%m.%Y");
Teraz o rýchlosti. V spojleri môžete vidieť porovnanie Tempus s Moment a natívne formátovanie dátumu (pozri vyššie):

Porovnanie natívnych JS, MomentJS a TempusJS

Získajte aktuálny dátum
Natívne JS x 2 175 575 ops/s ± 0,75 % (vzorkovaných 96 sérií) Moment x 284 864 snov/s ± 0,85 % (vzorkovaných 96 sérií) Tempus x 2 086 081 snov/s ± 0,73 % (vzorkovaných 97 sérií)
Formátovanie
Natívny JS x 1 637 517 ops/s ± 0,61 % (vzorkovaných 100 cyklov) Moment x 8 808 operácií/s ± 1,07 % (vzorkovaných 100 cyklov) Tempus x 942 815 ops/s ± 0,68 % (vzorkovaných 94 cyklov)
Automatická detekcia a analýza dátumu
Natívny JS x 11 204 316 ops/s ± 0,81 % (88 vzorkovaných cyklov) Moment x 38 511 ops/s ± 1,41 % (vzorkovaných 95 cyklov) Tempus x 93 973 ops/s ± 1,06 % (vzorkovaných 85 cyklov)
Analýza dátumu podľa formátu
Moment x 46,293 ops/s ±0,63 % (vzorkovaných 100 cyklov) Tempus x 109,947 ops/s ±0,93 % (vzorkovaných 99 cyklov)
Analýza a overenie
Moment x 44 588 ops/s ± 1,09 % (vzorkovaných 90 cyklov) Tempus x 103 439 ops/s ± 0,90 % (vzorkovaných 94 cyklov)
Výsledky sú z môjho notebooku Google Chrome 30.0.1599.114. V iných prehliadačoch sú výsledky odlišné, ale pomer zostáva približne rovnaký.
Na testy bola použitá knižnica benchmark.js
Benchmarky pre ďalšie funkcie, môžete vidieť.

Výhody tejto knižnice možno teda napísať takto:

  • Podporuje IE6+, Chrome, Firefox, Opera;
  • Podporuje reťazce hovorov;
  • Mesiace môžu začínať 1 (predvolené) namiesto nuly;
  • Milisekundy môžu byť zakázané (predvolené) alebo povolené;
  • Rýchla práca (Pretože sa v mnohých prípadoch používa natívny objekt Date prehliadača, ktorého implementácia je napísaná v rýchlejších jazykoch);
  • Podporuje vlastné formáty a doplnky
  • Overenie dátumu je veľmi rýchle a závisí len od funkcií, ktoré dátum nastavujú (pretože overenie prebieha už pri zadávaní hodnôt a nevypočítava sa samostatne);
  • Viacjazyčnosť a automatická detekcia jazyka používateľa.

Tu budeme hovoriť len o niektorých funkciách.

Formátovanie a analýza

Takže na začiatok ďalší príklad formátovania dátumu. Tu používame aj reťazenie hovorov. Na konci každého nastavenia hodnoty dostaneme späť objekt TempusDate, ktorý môžeme použiť ďalej v reťazci. Príklad:
tempus(). // získať nový dátum calc((mesiac: -1)). // zmenšenie o jeden mesiac format("%d.%m.%Y"); // Výstup ako reťazec
Dostaneme teda rovnaký deň, hodinu a sekundu, ale pred mesiacom. Je to užitočné pri získavaní prehľadov za posledný mesiac.

Ďalším príkladom je analýza dátumu.
// Vráti objekt TempusDate s dátumom "2013-11-18" tempus("18/11/2013"); // Vráti objekt TempusDate s dátumom "2013-12-12" tempus("2013-12-12", "%Y-%m-%d"));
Tempus dokáže automaticky rozpoznať niektoré známe formáty. Môžete tiež určiť konkrétny formát, potom bude analýza rýchlejšia. Navyše môžete nastaviť dátum, ktorý sa vráti, ak analýza zlyhá:
// Pretože "123" nezodpovedá formátu "%d.%m.%Y", potom // objekt obsahujúci dátum 2013-01-01 bude vrátený tempus("123", "%d.%m.%Y ", tempus ());
Môžete vidieť zoznam predvolených formátov

Teraz zmeňme formát už naformátovaného dátumu
// "2013-11-05" tempus("11/05/2013").format("%Y-%m-%d"); // Alebo takto // "Október, 12" tempus("2013-10-12 12:31:01", "%Y-%m-%d %H:%M:%S").format(" % B, % d");

Na formátovanie môžete použiť aj lokalizáciu. Štandardne sa vyberie jazyk používateľa (prevzatý z prehliadača) alebo predvolený jazyk, ak sa jazyk používateľa nenájde medzi dostupnými jazykmi Tempus.
// Nastavenie jazyka tempus.lang("ru"); // Štandardný formát použitia // "Nov, 05" tempus(1383609600).format("%B, %d");
Na tento moment Existujú len dva jazyky - ruština a angličtina, takže rád pomôžem.

Validácia

Overenie dátumu prebieha takto:
// Vráti false tempus("08/32/2013", "%d.%m.%Y").valid(); // Vráti true tempus("00:00 01.01.2012", "%H:%M %d.%m.%Y").valid();

V prípade chyby môžete vidieť polia, v ktorých sa vyskytla - vždy, keď hodnota nie je nepravdivá:
// Vráti ("year":-5,"month":false,"day":false,"hours":false, // "minutes":false,"seconds":false,"miliseconds":false) tempus (). rok (-5). // nastaviť rok=-5, t.j. neplatné chyby (); // získame objekt s chybami

Rozsahy dátumov

Niekedy potrebujeme získať počet rokov (napríklad vek), mesiacov, dní atď. medzi dvoma dátumami. Na to môžeme použiť metódu medzi, ktorá nájde rozdiel medzi dvoma dátumami a vráti sa požadovaný formát("rok", "mesiac", "deň", "hodiny", "minúty", "sekundy", "milisekundy").
Tu je jednoduchý príklad na získanie počtu mesiacov medzi 1. novembrom 2013 a 5. májom 2014:
// Vráti 6 tempus().between(tempus(), "mesiac");
Alebo koľko hodín zostáva do nového roka
tempus().medzi(tempus(), "hodiny");
V poslednom príklade môžete vidieť, že som špecifikoval iba rok. Pri nastavovaní hodnoty pre pole alebo objekt budú chýbajúce hodnoty
naplnené minimálne. Zoznam konštánt s minimálne hodnoty, môžete vidieť v dokumentácii.

Tiež môžeme zmeniť ľubovoľný dátum pomocou funkcie calc:
// Návrat TempusDate s dátumom 2012-01-01 tempus().calc((rok: 1, mesiac: -4, deň: -1));

Vlastné formáty

Používame vlastný formát mesiaca, ktorý môže nadobúdať hodnoty od 1 do 12 (namiesto 01 až 12):
// Zaregistrujte nový formát tempus.registerFormat("%q", // direktíva - %q function(date) ( // Tu zadajte funkciu formátovania, t. j. čím sa nahradí %q return date.month(); ) , function(value) (​// A tu je funkcia analýzy var v = Číslo(hodnota); return (mesiac: (isNaN(v) ? undefined: v)); ), 1, // Minimálna dĺžka tejto hodnoty 2 môže trvať , // Max dĺžka "číslo" // Typ); // Testovanie // Vráti "01.1.2013"; tempus((rok: 2013, mesiac: 1, deň: 1)).format("%d.%q.%Y"); // Vráti ("year":2013,"month":2,"day":10,"hours":0,"minutes":0,"seconds":0); tempus("10.2.2013", "%d.%q.%Y").get();
Pri registrácii si môžete všimnúť, že niektoré parametre sa nastavujú samostatne, pričom by ste mohli použiť regulárny výraz. V skutočnosti tam pôvodne bol, ale po jeho opustení sa rýchlosť zvýšila niekoľko desiatokkrát.
Ak potrebujete odstrániť nejaký formát, použite zrušiť registráciu:
tempus.unregisterFormat("%d"); // Vráti "%d.01.2013", pretože %d smernica už neexistuje. tempus.format((rok: 2013, mesiac: 1, deň: 1), "%d.%m.%Y");

Getters/Setters

Niektoré hodnoty môžete získať/nastaviť pomocou rok (), mesiac (), deň (), hodiny (), minúty (), sekundy (), milisekundy (), dayOfWeek (), utc (), časová pečiatka () alebo nastaviť funkcie (). Napríklad:
tempus(). // Získanie aktuálneho dátumu year(1900). // Nechajte všetko tak, ako je, ale nastavte rok na 1900 leapYear(); // Skontrolujte, či ide o priestupný rok, v tomto prípade false tempus().year(); // A tak dostaneme aktuálny rok v číselnom tvare

Generovanie dátumu

Dátum môžete vygenerovať mnohými spôsobmi, úplný zoznam parametre sú v dokumentácii. Tu je minimálny príklad.
// vráti ["29.03.2013", "30.03.2013", "31.03.2013", "01.04.2013", "02.04.2013"]; tempus.generate(( dátumOd: "20130329", formátOd: "%Y.%m.%d", dátumDo: "20130402", obdobie: (deň: 1), formát: "%d.%m.%Y" ));
To môže byť užitočné pre zobrazenie grafov podľa dátumov a zmenu formátu zobrazenia priamo na klientovi, bez požiadaviek na backend. Dátum je možné vygenerovať ako pole alebo ako objekty, kde samotné dátumy budú použité ako kľúče (toto je užitočné, keď potrebujeme naviazať udalosť na dátum, napríklad keď si robíme vlastný kalendár). Dátumy môžu byť tiež zoskupené podľa dní, týždňov, mesiacov, hodín, rokov - čokoľvek. Dá sa to aplikovať aj na kalendár.

Pluginy

V neposlednom rade pluginy. Tu rozširujeme továreň na generovanie náhodného dátumu. Tiež potrebujeme triedu TempusDate, ktorú nájdete v tempus.classes(). Tu je príklad doplnku:
(funkcia (tempus) ( var TempusDate = tempus.classes("TempusDate"); tempus.randomDate = function() ( var date = new TempusDate(); date.year(Math.floor((Math.random()*( tempus.MAX_YEAR - tempus.MIN_YEAR)) + tempus.MIN_YEAR)).mesiac(Math.floor((Math.random()*(tempus.MAX_MONTH - tempus.MIN_MONTH)) + tempus.MIN_MONTH)).deň(Math. floor((Math.random()*(date.dayCount() - tempus.MIN_DAY)) + tempos.MIN_DAY)).hours(Math.floor((Math.random()*(tempus.MAX_HOURS - tempus.MIN_HOURS)) ) + tempus.MIN_HOURS)).minúty(Math.floor((Math.random()*(tempus.MAX_MINUTES - tempus.MIN_MINUTES)) + tempus.MIN_MINUTES)).sekundy(Math.floor((Math.random()) *(tempus.MAX_SECONDS - tempo.MIN_SECONDS)) + tempo.MIN_SECONDS)); dátum návratu; ); ))(tempus); // Teraz môžeme vytvoriť dátumy ako je tento var someRandomDate = tempus.randomDate();
Myslím, že týmto spôsobom bude možné pohodlne písať widgety pomocou jQuery + Tempus, Angular + Tempus atď.

Zdroje

Môžete si ho nainštalovať stiahnutím zdrojového kódu z github:
https://github.com/crusat/tempus-js/releases
Alebo cez altánok:
$ bower nainštalovať tempus
Potrebujete iba jeden súbor - tempus.js alebo tempus.min.js.

Dúfam, že danej knižnice bude užitočné a tiež by bolo zaujímavé vedieť, čo v ňom chýba, aby sa knižnica ďalej rozvíjala správnym smerom. Ďakujem za tvoju pozornosť!
P.S. Ďakujem za pozvanie!