Pomocí new Date() vytvořte nový objekt Date obsahující aktuální datum a čas.

Všimněte si, že Datum() volané bez argumentů je ekvivalentní nové datum(Date.now()) .

Jakmile máte objekt data, můžete použít kterýkoli z několika dostupné metody k načtení jeho vlastností (např. getFullYear() k získání 4místného roku).

Níže jsou uvedeny některé běžné metody data.

Získejte aktuální rok

var rok = (new Date()).getFullYear(); konzolový protokol (rok); // Ukázkový výstup: 2016

Získejte aktuální měsíc

var měsíc = (new Date()).getMonth(); konzolový protokol (měsíc); // ukázkový výstup: 0

Všimněte si, že 0 = leden. Je to proto, že měsíce se liší od 0 před 11 , takže je často žádoucí přidat do indexu +1.

Získejte aktuální den

varday = (new Date()).getDate(); konzolový protokol (den); // ukázkový výstup: 31

Získejte aktuální hodinu

var hodiny = (new Date()).getHours(); log konzole (hodiny); // ukázkový výstup: 10

Získejte aktuální minuty

var minuty = (new Date()).getMinutes(); log konzole (minuty); // ukázkový výstup: 39

Získejte aktuální sekundy

var sekund = (new Date()).getSeconds(); konzolový protokol (druhý); // ukázkový výstup: 48

Získejte aktuální milisekundy

Chcete-li získat milisekundy (0 až 999) instance objektu Date, použijte metodu getMilliseconds.

var milisekundy = (new Date()).getMilliseconds(); log konzole (milisekundy); // Výstup: milisekundy právě teď

Převeďte aktuální čas a datum na lidsky čitelný řetězec

varnow = new Date(); // převod data na řetězec ve formátu časového pásma UTC: console.log(now.toUTCString()); // Výstup: Středa, 21. června 2017 09:13:01 GMT

Statická metoda Date.now() vrací počet milisekund od 1. ledna 1970 00:00:00 UTC. Chcete-li získat počet milisekund, které od té doby uplynuly pomocí instance objektu Date, použijte jeho metodu getTime.

// získání milisekund pomocí statické metody now of Date console.log(Date.now()); // získání milisekund pomocí metody getTime of Date instance console.log((new Date()).getTime());

Datum a čas jsou naší součástí Každodenní život a proto zaujímají přední místo v programování. V JavaScriptu může být při vytváření webu potřeba přidat kalendář, jízdní řád vlaků nebo rozhraní pro plánování schůzek. Tyto aplikace by měly ukazovat vhodné časy na základě aktuálního časového pásma uživatele nebo provádět výpočty související s příletem a odletem letadla nebo časem začátku a konce události. Kromě toho může být nutné použít JavaScript k odesílání denních přehledů v určitých časech nebo k filtrování (například k vyhledání restaurací, které jsou otevřené v určitou dobu).

objekt data

Datum je vestavěný objekt JavaScriptu, který ukládá datum a čas. Poskytuje řadu vestavěných metod pro formátování a manipulaci s těmito daty.

Ve výchozím nastavení vytvoří nová instance Date bez argumentů objekt s aktuálním datem a časem podle nastavení systému aktuální počítač.

Zkuste například přiřadit aktuální datum proměnné. Vytvořte soubor now.js.

// Nastaví proměnnou na aktuální datum a čas
const now = new Date();
// zobrazení výstupu
Nyní;
St 18. října 2017 12:41:34 GMT+0000 (UTC)

Výstupem je datový řetězec obsahující následující data:

Datum a čas jsou rozděleny a zobrazeny tak, aby byly snadno čitelné.

JavaScript však interpretuje datum na základě unixového časového razítka, což je hodnota skládající se z počtu milisekund, které uplynuly od půlnoci 1. ledna 1970. Časové razítko můžete získat pomocí metody getTime().

// Získejte aktuální časové razítko
now.getTime();
1508330494000

Velké číslo, které se objeví ve výstupu jako aktuální časové razítko, je počet milisekund, které uplynuly od půlnoci 1. ledna 1970 do 18. října 2017.

Nulový čas (neboli čas epochy) je reprezentován datem 01. leden, 1970 00:00:00 Universal Time (UTC) a časovým razítkem 0. Můžete to zkontrolovat v prohlížeči vytvořením nové proměnné v souboru epoch.js a přiřadit mu novou instanci Date na základě časového razítka 0.

// Přiřaďte časové razítko 0 nové proměnné
const epochTime = new Date(0);
epochTime;
1. ledna 1970 00:00:00 světového času (UTC)

Jako standard pro měření času pomocí počítačů byl zvolen nulový čas a tato metoda se používá v JavaScriptu. Je důležité porozumět časovým razítkům a datovým řetězcům, protože tyto koncepty lze použít v závislosti na nastavení a účelu aplikace.

Nyní víte, jak vytvořit novou instanci Date na základě aktuálního času a časového razítka. V JavaScriptu jsou celkem čtyři formáty data. Kromě výchozího aktuálního času a časového razítka můžete také použít řetězec data nebo zadat konkrétní datum a čas.

Předvést různé cesty odkazy na konkrétní datum, zkuste vytvořit nové objekty Date, které představují 4. července 1776, 12:30 GMT třemi různými způsoby.

// metoda časového razítka
nové Datum(-6106015800000);
// metoda řetězce data
nové Datum("31. ledna 1980 12:30");
// metoda data a času
nové datum(1776, 6, 4, 12, 30, 0, 0);

Všechny tyto příklady představují stejnou informaci o datu a čase třemi různými způsoby.

Jak vidíte, metoda časového razítka má záporné číslo; jakékoli datum před nulovým časem bude reprezentováno jako záporné číslo.

Ve třetím příkladu jsou sekundy a milisekundy reprezentovány 0. Pokud vám při vytváření objektu Date chybí nějaká data, musíte je přiřadit 0. Chybějící data nelze vynechat, protože pořadí časových dat v řetězci neodpovídá změna. Je třeba také poznamenat, že měsíc červenec je zde označen jako 6, nikoli 7. Je to proto, že odpočítávání začíná od 0, nikoli od 1. Více o tom v další části.

Načítání data pomocí get

Jakmile budete mít rande, můžete přistupovat ke všem jeho součástem pomocí různých vestavěných metod. Metody vracejí každou část data vzhledem k místnímu časovému pásmu. Každá z těchto metod začíná get a vrací relativní číslo. Níže je podrobná tabulka metod get pro objekt Date.

Čas schůzky Metoda Rozsah Příklad
Rok getFullYear() YYYY 1970
Měsíc getMonth() 0-11 0 = leden
den v měsíci getDate() 1-31 1 = 1. den v měsíci
Den v týdnu getDay() 0-6 0 = neděle
Hodina getHours() 0-23 0 = půlnoc
Minuta getMinutes() 0-59
Druhý getSeconds() 0-59
Milisekunda getMilliseconds() 0-999
časové razítko getTime()

// Inicializuje novou narozeninovou instanci
const narozeniny = new Date(1980, 6, 31);

Nyní můžete použít všechny metody k extrakci každé složky data.

narozeniny.getFullYear(); // 1980
narozeniny.getMonth(); // 6
narozeniny.getDate(); // 31
narozeniny.getDay(); // čtyři
narozeniny.getHours(); // 0
narozeniny.getMinutes(); // 0
narozeniny.getSeconds(); // 0
narozeniny.getMilliseconds(); // 0
narozeniny.getTime(); // 333849600000 (pro GMT)

Někdy může být nutné extrahovat pouze část data a vestavěné metody get vám s tím pomohou.

Můžete například porovnat dnešní datum s 3. říjnem a zjistit, zda je 3. října nebo ne.

// Získejte dnešní datum
const today = new Date();
// Srovnejte dnešek s 3. říjnem
if (today.getDate() === 3 && today.getMonth() === 9) (
console.log("Je 3. října.");
) jinak (
console.log("Není 3. října.");
}
Není 3. října.

Vestavěné metody get umožňují přístup ke komponentám data.

Změna data pomocí setu

Pro všechny výše uvedené metody get existuje odpovídající metoda set. Pokud se get používá k načtení konkrétní komponenty data, sada se používá ke změně těchto komponent. Níže je podrobná tabulka metod nastavení pro objekt Date.

Čas schůzky Metoda Rozsah Příklad
Rok setFullYear() YYYY 1970
Měsíc setMonth() 0-11 0 = leden
den v měsíci setDate() 1-31 1 = 1. den v měsíci
Den v týdnu setDay() 0-6 0 = neděle
Hodina setHours() 0-23 0 = půlnoc
Minuta setMinutes() 0-59
Druhý setSeconds() 0-59
Milisekunda setMilliseconds() 0-999
časové razítko setTime() Počet milisekund od nulového času

Tyto metody sady lze použít ke změně jedné nebo více komponent data. Můžete například změnit rok v proměnné narozeniny na 1997.

// Změna roku data narození
narozeniny.setFullYear(1997);
narozeniny;
Čt 31. července 1997 00:00:00 GMT+0000 (UTC)

Když nyní zavoláte proměnnou narozeniny, neuvidíte rok 1980, ale rok 1997.

Vestavěné metody sady umožňují měnit různé části objektu Date.

Metody UTC

Výše popsané metody get načítají komponenty data na základě místní nastaveníčasové pásmo uživatele. Chcete-li zvýšit kontrolu nad daty a časy, můžete použít metody getUTC, které fungují stejně jako metody get, ale počítají čas na základě standardu UTC (Coordinated Universal Time). Následuje tabulka metod UTC pro objekt Date v JavaScriptu.

Čas schůzky Metoda Rozsah Příklad
Rok getUTCFullYear() YYYY 1970
Měsíc getUTCMonth() 0-11 0 = leden
den v měsíci getUTCDate() 1-31 1 = 1. den v měsíci
Den v týdnu getUTCDay() 0-6 0 = neděle
Hodina getUTCHours() 0-23 0 = půlnoc
Minuta getUTCMinutes() 0-59
Druhý getUTCSecons() 0-59
Milisekunda getUTCMilliseconds() 0-999

Chcete-li zkontrolovat rozdíl mezi místními získat metody a získat metody UTC, spusťte následující kód.

// Přiřazení aktuálního času proměnné
const now = new Date();
// Tisk místního časového pásma a časového pásma UTC
console.log(now.getHours());
console.log(now.getUTCHours());

Tento kód vytiskne aktuální čas a čas v časovém pásmu UTC. Pokud se aktuálně nacházíte v časovém pásmu UTC, pak čísla, která program zobrazí, budou stejná.

UTC poskytuje mezinárodní časový standard, a proto může v případě potřeby ve vašem programu podporovat kód podle časových pásem.

Závěr

V tomto tutoriálu jste se naučili, jak vytvořit instanci objektu Date, jak používat jeho vestavěné metody pro přístup a úpravu komponent daného data. Více detailní informace o čase a datu v JavaScriptu najdete na Mozilla Developer Network.

Znalost práce s daty je důležitá pro mnoho běžných úkolů v JavaScriptu, od generování pravidelných sestav až po zobrazování dat a plánů ve správném časovém pásmu.

Štítky:

Získání aktuálního data v JavaScriptu je velmi snadné. K tomu slouží objekt Date. Jeho syntaxe je poměrně jednoduchá a názvy metod jsou intuitivní. V níže uvedených příkladech vám ukážu, jak pracovat s objektem Date ( Nové datum JavaScriptu), abyste získali aktuální rok, měsíc, den a čas na nejbližší milisekundu!

Získání aktuálního data:

Chcete-li získat aktuální datum v JavaScriptu, použijte klíčové slovo new pro vytvoření nové instance objektu Date.

var datum = new Date(); konzolový protokol (datum);

Tento kód vytiskne do konzole následující informace:

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

Zobrazuje aktuální den v týdnu, aktuální měsíc, den v měsíci, rok a dokonce i aktuální čas ve 24hodinovém formátu. Fragment " GMT" znamená čas GMT a " -0500 ' je rozdíl v časových pásmech mezi místním časem a GMT .

Citace z Wikipedie: „Greenwichský střední čas (GMT) GMT) je střední sluneční čas na Royal Observatory, Greenwich, Londýn." Je to spojeno s UTC (UTC). « východní standardní čas Znak ' v zobrazené hodnotě data odkazuje na časové pásmo vašeho prohlížeče nebo počítače.

* Upozorňujeme, že GMT a UTC se liší. Hodnoty UTC budeme uvažovat v minutách.

* Všimněte si také, že datum v JavaScriptu je definováno časem v milisekundách, který uplynul od půlnoci 1. ledna 1970, UTC. Jeden den je 86 400 000 milisekund. Rozsah objektu Date je -100 000 000 dní až 100 000 000 dní, vzhledem k 1. lednu 1970 UTC.

* Hodnoty získané pomocí výše uvedené metody závisí na systémovém nastavení vašeho zařízení. Pokud změníte nastavení hodin počítače, změní se také čas vrácený touto metodou.

Dobře, nové formáty data JavaScript jsme odstranili a nyní jsme připraveni jít dál!

Získání dne v týdnu:

Chcete-li získat den v týdnu, použijte metodu JavaScript objekt datum getDay() :

varday = datum.getDay(); konzolový protokol (den);

*Všimněte si, že dny v týdnu jsou číslovány od 0 do 6, neděle = 0, pondělí = 1, úterý = 2 atd.

Získejte měsíc:

Chcete-li získat aktuální měsíc aktuálního roku, použijte metodu getMonth(). Předtím jsem řekl, že názvy metod jsou intuitivní!

var měsíc = datum.getMonth(); konzolový protokol (měsíc); //jeden

* Všimněte si, že stejně jako dny v týdnu jsou měsíce vráceny v číselném formátu od 0 do 11; Leden = 0, únor = 1, březen = 2 a tak dále.

Získání dne v měsíci:

Chcete-li získat den v měsíci, můžete použít metodu GetDate().

var dayOfMonth = datum.getDate(); konzolový protokol (denMěsíce); //2

* Metoda GetDate() vrací dny v měsíci očíslované od 1 do 31; číslo 1 odpovídá prvnímu dni v měsíci.

Získání času:

K získání aktuálního času se používá metoda GetTime().

vartime = datum.getTime(); konzolový log(čas); //1454461242058

Vypadá to... divně... Co to je? Zobrazí se počet milisekund, které uplynuly od 1. ledna 1970 00:00:00 UTC. Tak jak je to staré?

1454461242058 ms / 31540000000 ms za rok = přibližně 46 let
1970 + 46 let = 2016

Zkontrolujeme, abychom se ujistili:

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

Ano, to je ono! Pouze vypíšeme aktuální datum a čas pomocí JavaScriptu nové datum.


Pro práci s daty a časy v JavaScriptu existuje speciální objekt - Date. Tento objekt je podporován téměř všemi verzemi JavaScriptu a lze jej použít bez ohledu na problémy s kompatibilitou.

Datum a čas v objektu Date nejsou uloženy explicitně, ale jako ve většině programovacích jazyků jako počet milisekund, které uplynuly od zrodu Unixu, tzn. od 0000 hodin dne 1. ledna 1970. Výrazná vlastnost Objekt Date - všechny hodnoty rozsahu mají indexy založené na nule. To znamená, že leden bude mít index 0 (měsíc #0) a prosinec bude jedenáctý měsíc místo dvanáctého. Totéž platí pro dny v týdnu, hodiny, minuty atd.

Vytvoření objektu Date je velmi jednoduché:

// aktuální datum-čas var date = new Date(); // datum-čas z řetězce nebo čísla var date = new Date(date); // datum-čas ze samostatných hodnot ​​var date = new Date(rok, měsíc, den, hodina, minuta, sekunda, milisekunda);

Objekt Date má řadu velmi užitečných metod, se kterými můžete pracovat jednotlivé komponenty datum-čas a také zkontrolovat správnost a správný výstup data ve stanoveném formátu.

Metody pro načítání komponent data-čas
getFullYear Vrátí rok (například 2011).
getYear Vrátí rok. Účel metody getYear je však stejný jako účel getFullYear tato metoda je zastaralý a nedoporučuje se používat, protože výsledky její práce nejsou jednoznačné: pro časové rozmezí 1900 až 1999 metoda vrací číslo roku ve století (dvoumístné, například 77), pro data mimo tento rozsah je plná hodnota vráceno (čtyřmístné, například 2009).
getMonth Vrátí měsíc.
getDate Vrátí den v měsíci (číslo v měsíci).
getHours Vrátí hodinu.
getMinutes Vrátí minutu.
getSeconds Vrátí sekundu.
getMilliseconds Vrátí milisekundu.
getDay Vrátí číslo dne v týdnu.
getTime Vrátí milisekundový posun uložený objektem.
Metody pro změnu komponent data-čas
setFullYear Nastavuje rok.
setYear Nastavuje rok. Účel metody setYear je podobný účelu metody setFullYear, ale tato metoda je zastaralá a zastaralá (stejně jako metoda getYear).
nastavitMěsíc Nastaví měsíc.
setDate Nastaví datum v měsíci (den v měsíci).
nastavitHours Nastaví hodinu.
nastavit minuty Nastaví minutu.
setSeconds Nastaví druhé.
setMillisekundy Nastaví milisekundu.
setTime Nastaví milisekundový posun vzhledem k 00:00:00 01/01/1970
Funkce formátování a výstupu data a času
toString Vrátí řetězcovou reprezentaci data a času.
toUTCString Vrátí řetězcovou reprezentaci data a času převedeného na čas UTC. Formát vráceného řetězce respektuje všechny internetové standardy.
toGMTString Vrátí řetězcovou reprezentaci data a času převedené na GMT (Greenwich Mean Time). Formát vráceného řetězce respektuje všechny internetové standardy.
toLocaleString Podobné jako toString, ale vrací řetězcovou reprezentaci data a času ve formátu podle národního prostředí uživatele.
toTimeString Vrátí řetězcovou reprezentaci času (řetězec obsahuje pouze čas).
toDateString Vrátí řetězcovou reprezentaci data (řetězec obsahuje pouze datum).
toLocaleTimeString Podobné jako toTimeString, ale vrací řetězcovou reprezentaci času ve formátu podle národního prostředí uživatele.
toLocaleDateString Podobné jako toDateString, ale vrací řetězcovou reprezentaci data ve formátu podle národního prostředí uživatele.
Doplňkové funkce
getTimezoneOffset Vrátí posun místního času v počítači uživatele vzhledem k UTC. Posun je vrácen v minutách.
rozebrat Funkce umožňuje zkontrolovat správnost data a času zapsaného jako řetězec. Pokud je řetězec správný, okamžitě se vytvoří objekt Date.

Objekt Date také obsahuje řadu metod pro práci s daty UTC. Tyto funkce jsou zcela podobné těm, které již byly zvažovány, ale obsahují předponu „UTC“ v názvu a pracují pouze s „univerzálním“ časem: getUTCSeconds, setUTCFullYear atd.

Zvažte příklad práce s daty:

A zde je výstup tohoto skriptu:


Jak vidíte, zobrazení data se výrazně liší v závislosti na použitém formátu. Proto při práci s datem a časem musíte dodržovat několik jednoduchých pravidel:

1. Pokud je to možné, používejte formáty UTC nebo GMT. To je zvláště důležité při vytváření distribuovaných řešení (například klientů platební systémy). Použití společného referenčního času vám poskytne záruky (i když ne stoprocentní), že vy i váš vzdálený partner budete interpretovat přijatá data stejným způsobem.

2. Lokalizované datum a čas má smysl používat pouze při jejich zobrazování uživateli. Ve všech ostatních případech je lepší lokalizovaná data odmítnout.

3. Pokud stále musíte používat místní datum a čas - nezapomeňte vzít v úvahu posun místního času vzhledem k referenčnímu času (UTC nebo GMT).

Dodržování těchto pravidel vás ušetří většiny logických chyb a nedostatků, což znamená, že váš kód bude stabilnější a kvalitnější.

Ahoj všichni!
Často musím pracovat se statistickými daty a tam je hodně svázáno s daty. Kromě toho může být na stránce použito stejné datum v různých formátech (například strojově a lidsky). Myslím, že většina z vás má docela dobrou představu o všech těch příšerných kódech, které vznikají při používání objektu Date.
Chcete-li například získat aktuální datum ve formátu DD.MM.RRRR, musíme provést následující:
var d = new Date(), fd = d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear();
A když je takových linek hodně? Je snadné si zapamatovat, že v javascriptu začíná měsíc od nuly, když se vyvíjíte nejen na něm? Nebo skutečnost, že jsou zde milisekundy, a ne sekundy, jako téměř všude na backendu? Některé problémy můžete vyřešit pomocí oblíbené knihovny Moment.js, která ale funguje velmi pomalu.
Dotyčná knihovna tyto problémy řeší.
Pokud vás to zajímá, doporučuji přečíst si tuto krátkou recenzi.

TempusJS je hodně syntaktický cukr na objektu Date, takže je velmi rychlý. Syntaxe samotné knihovny je poměrně jednoduchá. Například předchozí příklad by mohl být zapsán takto:
var fd = tempus().format("%d.%m.%Y");
Nyní o rychlosti. Ve spoileru můžete vidět srovnání Tempus s Momentem a nativní formátování data (viz výše):

Porovnání nativních JS, MomentJS a TempusJS

Získejte aktuální datum
Nativní JS x 2 175 575 ops/s ± 0,75 % (vzorkováno 96 běhů) Moment x 284 864 ops/s ± 0,85 % (vzorkováno 96 běhů) Tempus x 2 086 081 ops/s ± 0,73 % (vzorkováno 97 běhů)
Formátování
Nativní JS x 1 637 517 ops/s ± 0,61 % (vzorkováno 100 běhů) Moment x 8 808 ops/s ± 1,07 % (vzorkováno 100 běhů) Tempus x 942 815 ops/s ± 0,68 % (vzorkováno 94 běhů)
Automatická detekce a analýza data
Nativní JS x 11 204 316 ops/s ± 0,81 % (88 vzorkovaných běhů) Moment x 38 511 ops/s ± 1,41 % (vzorkováno 95 běhů) Tempus x 93 973 ops/s ± 1,06 % (85 vzorkování)
Analýza data podle formátu
Moment x 46,293 ops/s ±0,63 % (vzorkováno 100 běhů) Tempus x 109,947 ops/s ±0,93 % (vzorkováno 99 běhů)
Analýza a validace
Moment x 44 588 ops/s ±1,09 % (vzorkováno 90 běhů) Tempus x 103 439 ops/s ± 0,90 % (vzorkováno 94 běhů)
Výsledky jsou z mého notebooku Google Chrome 30.0.1599.114. V jiných prohlížečích jsou výsledky odlišné, ale poměr zůstává přibližně stejný.
Pro testy byla použita knihovna benchmark.js
Benchmarky pro další funkce, můžete vidět.

Výhody této knihovny lze tedy napsat následovně:

  • Podporuje IE6+, Chrome, Firefox, Opera;
  • Podporuje volací řetězce;
  • Měsíce mohou začínat 1 (výchozí) místo nuly;
  • Milisekundy lze zakázat (výchozí) nebo povolit;
  • Rychlá práce (Protože se v mnoha případech používá nativní objekt Date prohlížeče, jehož implementace je napsána v rychlejších jazycích);
  • Podporuje vlastní formáty a pluginy
  • Validace data je velmi rychlá a závisí pouze na funkcích, které datum nastavují (protože validace probíhá již při zadávání hodnot a nepočítá se samostatně);
  • Vícejazyčnost a automatická detekce jazyka uživatele.

Zde budeme hovořit pouze o některých funkcích.

Formátování a analýza

Takže pro začátek další příklad formátování data. Zde také využíváme řetězení hovorů. Na konci každého nastavení hodnoty získáme zpět objekt TempusDate, který můžeme použít dále v řetězci. Příklad:
tempus(). // dostat nové datum calc((měsíc: -1)). // zmenšení o jeden měsíc format("%d.%m.%Y"); // Výstup jako řetězec
Dostaneme tedy stejný den, hodinu a sekundu, ale před měsícem. To je užitečné pro získání přehledů za poslední měsíc.

Dalším příkladem je analýza data.
// Vrátí objekt TempusDate s datem "2013-11-18" tempus("18/11/2013"); // Vrátí objekt TempusDate s datem "2013-12-12" tempus("2013-12-12", "%Y-%m-%d"));
Tempus dokáže automaticky detekovat některé známé formáty. Můžete také zadat konkrétní formát, pak bude analýza rychlejší. Navíc můžete nastavit datum, které bude vráceno, pokud se analýza nezdaří:
// Protože "123" neodpovídá formátu "%d.%m.%Y", potom // objekt obsahující datum 2013-01-01 bude vrácen tempus("123", "%d.%m.%Y ", tempus ());
Můžete vidět seznam výchozích formátů

Nyní změňme formát již naformátovaného data
// "2013-11-05" tempus("11/05/2013").format("%Y-%m-%d"); // Nebo takto // "Říjen, 12" tempus("2013-10-12 12:31:01", "%Y-%m-%d %H:%M:%S").format(" % B, %d");

Pro formátování můžete také použít lokalizaci. Ve výchozím nastavení bude vybrán jazyk uživatele (převzat z prohlížeče) nebo výchozí jazyk, pokud se jazyk uživatele nenajde mezi dostupnými jazyky Tempus.
// Nastavení jazyka tempus.lang("ru"); // Standardní formát použití // "Nov, 05" tempus(1383609600).format("%B, %d");
Na tento moment Existují pouze dva jazyky - ruština a angličtina, takže rád pomůžu.

Validace

Ověření data probíhá takto:
// Vrátí false tempus("08/32/2013", "%d.%m.%Y").valid(); // Vrátí true tempus("00:00 01.01.2012", "%H:%M %d.%m.%Y").valid();

V případě chyby můžete vidět pole, ve kterých k ní došlo - pokud hodnota není nepravdivá:
// Vrátí ("year":-5,"month":false,"day":false,"hours":false, // "minutes":false,"seconds":false,"miliseconds":false) tempus (). rok (-5). // nastavit rok=-5, tzn. neplatné chyby(); // získat objekt s chybami

Časová období

Někdy potřebujeme získat počet let (například věk), měsíce, dny atd. mezi dvěma daty. K tomu můžeme použít metodu mezi, která najde rozdíl mezi dvěma daty a vrátí in požadovaný formát("rok", "měsíc", "den", "hodiny", "minuty", "sekundy", "milisekundy").
Zde je jednoduchý příklad pro získání počtu měsíců mezi 1. listopadem 2013 a 5. květnem 2014:
// Vrátí 6 tempus().mezi(tempus(), "měsíc");
Nebo kolik hodin zbývá do nového roku
tempus().mezi(tempus(), "hodiny");
V posledním příkladu vidíte, že jsem uvedl pouze rok. Při nastavení hodnoty na pole nebo objekt budou chybějící hodnoty
naplněné minimem. Seznam konstant s minimální hodnoty, můžete vidět v dokumentaci.

Také můžeme změnit libovolné datum pomocí funkce calc:
// Návrat TempusDate s datem 2012-01-01 tempus().calc((rok: 1, měsíc: -4, den: -1));

Vlastní formáty

Pro měsíc používáme vlastní formát, který může nabývat hodnot od 1 do 12 (místo 01 až 12):
// Zaregistrujte nový formát tempus.registerFormat("%q", // direktiva - %q function(date) ( // Zde zadejte formátovací funkci, tj. co bude nahrazeno %q return date.month(); ) , function(value) ( ​​​​ // A zde je funkce analýzy var v = Číslo(hodnota); return (měsíc: (isNaN(v) ? nedefinováno: v)); ), 1, // Minimální délka, která hodnota 2 může trvat , // Max délka "číslo" // Typ); // Testování // Vrátí "01.1.2013"; tempus((rok: 2013, měsíc: 1, den: 1)).format("%d.%q.%Y"); // Vrátí ("year":2013,"month":2,"day":10,"hours":0,"minutes":0,"seconds":0); tempus("10.2.2013", "%d.%q.%Y").get();
Při registraci si můžete všimnout, že některé parametry se nastavují samostatně, přičemž byste mohli používat regulární výraz. Ve skutečnosti tam zpočátku byla, ale po jejím opuštění se rychlost několik desítekkrát zvýšila.
Pokud potřebujete odstranit nějaký formát, použijte UnregisterFormat:
tempus.unregisterFormat("%d"); // Vrátí "%d.01.2013", protože direktiva %d již neexistuje. tempus.format((rok: 2013, měsíc: 1, den: 1), "%d.%m.%Y");

Getters/Setters

Některé hodnoty můžete získat/nastavit pomocí year(), month(), day(), hours(), minutes(), seconds(), miliseconds(), dayOfWeek(), utc(), timestamp() nebo nastavit funkce (). Například:
tempus(). // Získání aktuálního data year(1900). // Nechte vše tak, jak je, ale nastavte rok na 1900 leapYear(); // Zkontrolujte, zda se jedná o přestupný rok, v tomto případě false tempus().year(); // A tak dostaneme aktuální rok v číselné podobě

Generování data

Datum můžete vygenerovat mnoha způsoby, úplný seznam parametry jsou v dokumentaci. Zde je minimální příklad.
// vrátí ["29.03.2013", "30.03.2013", "31.03.2013", "01.04.2013", "02.04.2013"]; tempus.generate(( datumOd: "20130329", formátOd: "%Y.%m.%d", datumDo: "20130402", období: (den: 1), formát: "%d.%m.%Y" ));
To může být užitečné pro zobrazení grafů podle dat a změnu formátu zobrazení přímo na klientovi, bez požadavků na backend. Datum lze generovat jako pole nebo jako objekty, kde samotná data budou použita jako klíče (to se hodí, když potřebujeme svázat událost s datem, například když si děláme vlastní kalendář). Data lze také seskupit podle dnů, týdnů, měsíců, hodin, let - podle čehokoli. To lze aplikovat i na kalendář.

Pluginy

V neposlední řadě pluginy. Zde rozšiřujeme továrnu o generování náhodného data. Také potřebujeme třídu TempusDate, kterou lze nalézt v tempus.classes(). Zde je příklad pluginu:
(funkce (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)).měsíc(Math.podlaží((Math.random()*(tempus.MAX_MONTH - tempus.MIN_MONTH)) + tempus.MIN_MONTH)).den(Math. patro((Math.random()*(date.dayCount() - tempus.MIN_DAY)) + tempus.MIN_DAY)).hours(Math.floor((Math.random()*(tempus.MAX_HOURS - tempus.MIN_HOURS)) ) + tempus.MIN_HOURS)).minuty(Math.floor((Math.random()*(tempus.MAX_MINUTES - tempus.MIN_MINUTES)) + tempus.MIN_MINUTES)).seconds(Math.floor((Math.random()) *(tempus.MAX_SECONDS - tempus.MIN_SECONDS)) + tempus.MIN_SECONDS)); datum návratu; ); ))(tempus); // Nyní můžeme vytvořit podobná data var someRandomDate = tempus.randomDate();
Myslím, že tímto způsobem bude možné pohodlně psát widgety pomocí jQuery + Tempus, Angular + Tempus atp.

Prameny

Můžete jej nainstalovat stažením zdrojového kódu z github:
https://github.com/crusat/tempus-js/releases
Nebo přes altánek:
$ bower nainstalovat tempus
Potřebujete pouze jeden soubor - tempus.js nebo tempus.min.js.

Doufám že daná knihovna bude užitečné a také by bylo zajímavé vědět, co v něm chybí, aby se knihovna dále rozvíjela správným směrem. Děkuji za pozornost!
P.S. Děkuji za pozvání!