Kontakty

Javascript čas v milisekundách. JavaScript Získajte aktuálny čas a dátum. Metódy získavania jednotlivých komponentov objektu dátumu

Dátum a čas sú súčasťou nášho každodenného života, a preto zaberajú prominentné miesto v programovaní. V JavaScript, pri vytváraní webovej stránky možno budete musieť pridať kalendár, plán vlaku alebo rozhrania na plánovanie stretnutí. Tieto aplikácie musia preukázať príslušné časové miesta v závislosti od aktuálneho časového pásma používateľa alebo vykonávať výpočty súvisiace s príchodom a odchodom lietadla alebo čas začiatku a konca akejkoľvek udalosti. Okrem toho budete musieť použiť JavaScript na odosielanie denných správ v určitom čase alebo na filtrovanie (napríklad na vyhľadávanie reštaurácií s otvoreným časom).

Dátum objektu.

Dátum je vstavaný objekt JavaScriptu, ktorý ukladá dátum a čas. Poskytuje niekoľko vstavaných metód formátovania a riadenia týchto údajov.

V predvolenom nastavení, nová inštancia dátumu bez argumentov vytvorí objekt s aktuálnym dátumom a časom v súlade s nastaveniami systému aktuálneho počítača.

Pokúste sa napríklad priradiť aktuálnu premennú dátumu. Vytvorte súbor Now.js.

// Nastaviť premennú na aktuálny dátum a čas
Const teraz \u003d nový dátum ();
// Zobraziť výstup
Teraz;
St. 18. 2017 12:41:34 GMT + 0000 (UTC)

Výstup je reťazec s dátumom, ktorý obsahuje nasledujúce údaje:

Dátum a čas sú rozbité a zobrazené vhodné pre vnímanie.

Javascript však vníma dátum založený na timestrite Unix-time, čo je hodnota pozostávajúca z počtu milisekunds, ktoré prešli od polnoci 1. januára 1970. Pomocou metódy GetTime () môžete získať časovú pečiatku.

// Získajte aktuálnu časovú pečiatku
teraz.gettime ();
1508330494000

Veľké číslo, ktoré sa objavuje na produkte ako aktuálnej časovej pečiatky, je počet milisekúnd, ktoré prešli od polnoci 1. januára 1970 dňa 18. októbra 2017.

Nulový čas (alebo epoch čas) je reprezentovaný podľa dátumu riadku 01 január, 1970 00:00:00 Universal Time (UTC) a TimeStamp 0. Môžete ho skontrolovať v prehliadači vytvorením novej premennej v súbore epoch.js a pridelenie novej inštancie dátumu. Na základe časovej pečiatky 0.

// priradiť časovú pečiatku 0 na novú premennú
Const epochtime \u003d nový dátum (0);
Epochtime;
01. január, 1970 00:00:00 Universal Time (UTC)

Nulový čas bol vybraný ako štandard na meranie času s počítačmi a táto metóda sa používa v Javascript. Je dôležité pochopiť dočasné značky a riadky dátumov, pretože tieto koncepty môžu byť použité v závislosti od nastavení a cieľov aplikácie.

Teraz viete, ako vytvoriť novú inštanciu dátumu založená na aktuálnom čase a na základe časovej značky. Celkovo štyroch dátumových formátov v Javascript. Okrem aktuálneho času môže byť predvolený a dočasný štítok tiež použitý serčenie reťazec alebo zadať konkrétny dátum a čas.

Ak chcete preukázať rôzne spôsoby odkazov na konkrétny dátum, skúste vytvoriť nové dátumové objekty, ktoré budú zastúpené 4. júla 1776, 12:30 v Greenwichu v troch rôznych smeroch.

// Metóda časovej siete.
Nový dátum (-6106015800000);
// Dátum Spôsob reťazca
Nový dátum ("31. január 1980 12:30");
// Metóda Dátum a čas
Nový dátum (1776, 6, 4, 12, 30, 0, 0, 0);

Všetky tieto príklady predstavujú rovnaké informácie o dátume a čase tri rôzne spôsoby.

Ako vidíte, metóda dočasného štítku má záporné číslo; Každý dátum na nulový čas bude prezentovaný ako záporné číslo.

V treťom príklade druhého a milisekúnd sú 0. Ak nemáte dostatok dát pri vytváraní objektu dátumu, musíte ich priradiť 0. Chýbajúce údaje nemôžu byť skidd, pretože čas časových údajov v reťazci nie je zmeniť. Treba tiež poznamenať, že mesiaca júl je uvedený ako 6, a nie ako 7. To je preto, že počítanie začína nie od 1, ale od 0. viac o ňom - \u200b\u200bv nasledujúcej časti.

Odstránenie dátumu pomocou Získania

Mať dátum, 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 v porovnaní s miestnym časovým pásmom. Každá z týchto metód začína dostať a vráti relatívne číslo. Nižšie je podrobný tabuľka získaných metód pre date objekt.

Dátum Čas Metóda Rozsah Príklad
Ročník gettelear () Yyyy. 1970
Mesiac getmonth () 0-11 0 \u003d január.
Deň v mesiaci getdate () 1-31 1 \u003d 1. mesiaca
Deň v týždni guedada () 0-6 0 \u003d nedeľa.
Hodina gethours () 0-23 0 \u003d polnoci
Minútu getminutes () 0-59
Druhý geseconds () 0-59
Milisekunda getmilliseconds () 0-999
Dočasný štítok getme ()

// Inicializujte novú inštanciu narodenín
Const narodeniny \u003d nový dátum (1980, 6, 31);

Teraz môžete použiť všetky metódy na extrahovanie každého komponentu dátumu.

narodeniny.getlyear (); // 1980.
Narodeniny. // 6.
Birthday.getDate (); // 31.
Narodeniny. // štyri
Narodeniny. // 0.
Narodeniny.getminutes (); // 0.
Narodeniny.getseconds (); // 0.
Narodeniny.getmilliseconds (); // 0.
Narodeniny. // 333849600000 (pre GMT)

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

Môžete napríklad porovnať aktuálny dátum s dátumom 3. októbra, aby ste zistili, 3. október teraz alebo nie.

// DOSTATOČNÝ DÁTUM
Const dnes \u003d nový dátum ();
// Porovnajte dnes s 3. októbrom
Ak (dnes.GetDate () \u003d\u003d\u003d 3 && Today.GetMadth () \u003d\u003d\u003d 9)
Console.log (ďalej len "to" s 3. október. ");
) Inak (
Console.log ("to nie je 3. október.");
}
Nie je to 3. október.

Vstavané metódy získavajú prístup k dátumovým komponentom.

Zmena dátumu s množstvom

Pre všetky metódy sú uvedené vyššie, je tu vhodná metóda nastavená. Ak sa dostanete na extrahovanie konkrétneho komponentu dátumu, sa použije na zmenu týchto komponentov. Nižšie je podrobná tabuľka nastavených metód pre objekt dátumu.

Dátum Čas Metóda Rozsah Príklad
Ročník osetové () Yyyy. 1970
Mesiac sETMONTH () 0-11 0 \u003d január.
Deň v mesiaci setdate () 1-31 1 \u003d 1. mesiaca
Deň v týždni nastavenie () 0-6 0 \u003d nedeľa.
Hodina sethours () 0-23 0 \u003d polnoci
Minútu setminutes () 0-59
Druhý setseconds () 0-59
Milisekunda setmilliseconds () 0-999
Dočasný štítok nastavte čas () Počet milisekúnd z nulového času

Tieto nastavené metódy môžu byť použité na zmenu jedného alebo viacerých komponentov dátumu. Napríklad môžete zmeniť rok v premennej narodeninám na rok 1997.

// Zmeniť rok narodeniny Dátum
Narodeniny.seteart (1997);
Narodeniny;
Thu JUL 31 1997 00:00:00 GMT + 0000 (UTC)

Teraz pri volaní variabilných narodenín nevidíte 1980 a 1997.

Vstavané nastavené metódy umožňujú zmeniť rôzne časti objektu dátumu.

Metódy UTC

Vyššie opísané metódy Získavajú dátumové komponenty na základe nastavení lokálnej zóny používateľa. Ak chcete zvýšiť kontrolu nad dátumami a časom, môžete použiť metódy Getutc, ktoré fungujú rovnakým spôsobom ako získať metódy, ale vypočítajte čas na základe štandardu UTC (celosvetový koordinovaný čas). Nižšie je uvedený tabuľka metódy UTC pre objekt dátumu v JavaScript.

Dátum Čas Metóda Rozsah Príklad
Ročník getutclear () Yyyy. 1970
Mesiac getutconth () 0-11 0 \u003d január.
Deň v mesiaci getutcdate () 1-31 1 \u003d 1. mesiaca
Deň v týždni getutcday () 0-6 0 \u003d nedeľa.
Hodina getutchours () 0-23 0 \u003d polnoci
Minútu getutcminutes () 0-59
Druhý getutcseconds () 0-59
Milisekunda getutcmilliseconds () 0-999

Ak chcete skontrolovať rozdiel medzi miestnymi metódami a metódami Get UTC, spustite nasledujúci kód.

// priradiť aktuálny čas premennej
Const teraz \u003d nový dátum ();
// Print Local a UTC Timezones
Konzoly.log (teraz.Gethours ());
Konzoly.log (teraz.getutchours ());

Tento kód zobrazí aktuálny čas a čas na časovom pásme UTC. Ak ste teraz v časovom pásme UTC, čísla, ktoré program stiahne, bude rovnaký.

UTC poskytuje medzinárodný časový štandard, a preto môže v prípade potreby podporovať kód v súlade s časovými zónmi.

Záver

V tomto návode ste sa naučili, ako vytvoriť inštanciu objektu dátumu, ako používať jeho vstavané metódy na prístup a zmenu komponentov špecifického dátumu. Viac informácií o čase a dátume v jazyku JavaScript nájdete na Mozilla Developer Network.

Schopnosť pracovať s dátummi je dôležitá pre mnohé spoločné úlohy v Javascripte: Vytvorenie pravidelných prehľadov pred zobrazením dátumov a plánov v správnom časovom pásme.

Tagy:

Ahojte všetci!
Často musím pracovať so štatistickými údajmi a na dátumy je veľmi zviazané. Okrem toho, jeden a ten istý dátum môže byť použitý na stránke v rôznych formátoch (napríklad vo vhodnom stroji a v pohodlnej osobe). Myslím, že väčšina z vás dokonale predstavuje všetok tento desivý kód, ktorý sa získa pri použití objektu dátumu.
Ak chcete napríklad získať aktuálny dátum vo formáte DD.MM.YGYY. Budeme musieť vykonať nasledovné:
var d \u003d nový dátum (), fd \u003d d.getdate () + "." + (d.getmonth () + 1) + "." + d.getfelear ();
A keď sa takéto struny stanú veľa? Je ľahké spomenúť, že v JavaScript mesačne začína od nuly, keď sa vyvíjate nielen na to? Alebo čo tam je miliseconds, a nie sekundu, ako takmer všade na backend? Môžete vyriešiť časť úloh obľúbenej knižnice moment.js, ale funguje to veľmi pomaly.
Zosúladená knižnica rieši tieto problémy.
Ak by som sa čudoval, odporúčam, aby ste si prečítali túto malú recenziu.

Tempusjs sa vo veľkej miere pozostáva zo syntaxe cukru nad objektom dátumu, takže to funguje veľmi rýchlo. Syntax samotnej knižnice je veľmi jednoduchá. Napríklad, napíšte predchádzajúci príklad, môžete:
var fd \u003d tempus (). formát ("% d.% m.% y");
Teraz o rýchlosti. V spojileri môžete vidieť porovnávanie tempus s okamihom a natívnej metóde formátovania dátumu (pozri vyššie):

Porovnanie natívneho JS, momentJs a tempusjs

Získame aktuálny dátum
Native JS X 2,175,575 OPS / SEK ± 0,75% (96 RUNDS VZORKA) Moment X 284,864 OPS / SEC ± 0,85% (vzorka 96 spustených) Tempus x 2,086,081 OPS / SEK ± 0,73% (vzorka 97 spustenia)
Formátovanie
Natívny JS X 1,637,517 OPS / SEK ± 0,61% (100 spustená vzorka) moment x 8,808 OPS / s ± 1,07% (100 spustených vzoriek) Tempus x 942,815 OPS / s ± 0,68% (vzorka 94 spustenia)
Auto Detekcia dátumu a analýzy
Native JS X 11,204,316 OPS / SEK ± 0,81% (88 RUNDS VZORKA) Moment X 38,511 OPS / SEK ± 1,41% (95 WUNDS Sample) Tempus x 93,973 OPS / SEC ± 1,06% (85 spúšťacia vzorka)
Dátum analýzy vo formáte
Moment X 46,293 OPS / SEC ± 0,63% (vzorka 100 spúšťa) Tempus x 109,947 OPS / SEC ± 0,93% (vzorka 99 spúšťa)
Analýzy a validácie
Moment x 44,588 OPS / SEK ± 1,09% (vzorka 90 spúšťa) Tempus x 103,439 OPS / s ± 0,90% (vzorka 94 spúšťa)
Výsledky boli získané na mojom notebooku v Google Chrome 30.0.1599.114. V iných prehliadačoch sa výsledky líšia, ale pomer zostáva približne rovnaký.
Pre testy Použitá knižnica Benchmark.js
Benchmark na iných funkciách, môžete vidieť.

V výhodách tejto knižnice môžete zaznamenať nasledovné:

  • Podporuje IE6 +, Chrome, Firefox, Opera;
  • Podporuje reťazce hovorov;
  • Mesiacov môže začať 1 (predvolené), nie nula;
  • Milliseconds môžu byť zakázané (štandardne) alebo zahrnuté;
  • Rýchla práca (ako v mnohých prípadoch sa objekt dátumu používa natívne do prehliadača, ktorého realizácia je napísaná v rýchlejších jazykoch);
  • Podporuje vlastné formáty a pluginy
  • Validácia dátumu je veľmi rýchla a závisí len od dátumu nastavenia funkcií (pretože validácia je už v rámci zvýšených hodnôt a nie je vypočítaná samostatne);
  • Viacjazyčná a automatická definícia užívateľského jazyka.

Tu bude len o niektorých funkciách.

Formátovanie a balík

Takže pre štartéry ďalší príklad formátovania dátumu. Tu tiež používame výziev reťaze. Na konci každého nastavenia získame objekt tempusdate, ktorý môže byť ďalej použitý v reťazci. Príklad:
Tempus (). // Získajte nový dátum Calc (((mesiac: -1)). // znížiť ho na jeden mesiac formát ("% d.% M.% Y"); // Zobrazenie v podobe reťazca
Dostaneme teda ten istý deň, hodinu a sekundu, ale pred mesiacom. To je užitočné pre správy za posledný mesiac.

Nasledujúci príklad je dátumy parceling.
// Vráťte dátum tempusdates objektu "2013-11-18" Tempus ("18.11.2013"); // Vráťte objekt Tempusdate s dátumom "2013-12-12" Tempus ("2013-12-12", "% Y-% M-% D"));
Tempus môže automaticky určiť niektoré známe formáty. Tiež môžete zadať špecifický formát, potom sa balík vyskytne rýchlejšie. Navyše môžete zadať dátum, ktorý sa vráti, ak sa analýzy zlyhá:
// t.k. "123" nevyhovuje formátu "% d.% M.% Y", potom // Objekt obsahujúci dátum 2013-01-01 Tempus sa vráti ("123", "% d.% M.% y ", Tempus ());
Zoznam formátov štandardne je možné zobraziť.

A teraz zmení formát už formátovaného dátumu
// "2013-11-05" Tempus ("05.11.2013"). Formát ("% Y-% M-% D"); // alebo tak // "Október, 12" Tempus (2013-10-12 12:31:01 ","% Y-% M-% D% H:% M:% s "). formát ("%) B,% d ");

Tiež môžete použiť lokalizáciu formátovania. V predvolenom nastavení bude vybratý užívateľský jazyk (odobrať z prehliadača) alebo predvolený jazyk, ak užívateľský jazyk nie je zistený medzi dostupnými jazykmi Tempus.
// Nainštalujte jazyk Tempus.Lang ("RU"); // štandardne použite formát // "November, 05" Tempus (1383609600) .FORMAT ("% B,% D");
V súčasnosti sú jazyky len dve - ruské a anglicky, takže budem rád, že vám pomôžem.

Overovanie

Validácia dátumu nastane nasledovne:
// Vráťte falošné tempus ("32.08.2013", "% d.% M.% y"). Platné (); // Zachovať skutočné tempus ("00:00 01.01.2012", "% H:% M% d.% M.% y"). Platné ();

V prípade chyby môžete vidieť polia, v ktorých vznikol - všade, kde hodnota nie je nepravdivá:
// návrat ("rok": - 5, "mesiac": False, "Deň": False, "Hodiny": False, // "Minúty": FALSE, "SECKNY": FALSE, "MILLISECONDS": FALSE) Tempus (). Rok (-5). // nastavte rok \u003d -5, t.j. Nevalitné chyby (); // Získajte objekt s chybami

Rozsahy

Niekedy musíme získať počet rokov (napríklad vek), mesiacov, dní atď. medzi dvoma dátumami. Aby sme to mohli urobiť, môžeme použiť medzi metódou, ktorá nájde rozdiel medzi dvoma dátumami a vráti sa v požadovanom formáte ("rok", "mesiac", "deň", "hodiny", "minúty", "sekundy", " Milliseconds ").
Tu je jednoduchý príklad získavania počtu mesiacov od 1. novembra 2013 A 5. mája 2014:
// vráti 6 tempus (). medzi (tempus (), mesiacom ");
Alebo koľko hodín odišlo pred novým rokom
Tempus (). Medzi (tempus (), "hodiny");
V poslednom príklade môžete vidieť, že som poukázal len na rok. Pri nastavení hodnoty s poleom alebo objektom bude nedostatok hodnôt
naplnené minimálnym. Zoznam konštanty s minimálnymi hodnotami, môžete vidieť v dokumentácii.

Tiež môžeme zmeniť akýkoľvek dátum pomocou funkcie Call:
// Vráťte tempusdate s dátumom 2012-01-01 Tempus (). Calc ((rok: 1, mesiac: -4, deň: -1));

Jeho formáty

Používame váš formát na mesiac, ktorý môže mať hodnoty od 1 do 12 (a nie 01 až 12):
// zaregistrujú nový formát tempus.Registerform ("% q", // Smernica -% Q Funkcia (Dátum) (// Uveďte funkciu formátovania, tj to, čo bude nahradené namiesto% q návratu dátumu. Month (); ), Funkcia (hodnota) (// a tu valec v \u003d funkcia analýzy čísla; návrat (mesiac: (Isnan (v)? Nedefinované: v));), 1, // minimálna dĺžka, ktorá je 2, // Maximálna dĺžka "Číslo" // Typ); // Test // Returns "01.1.2013"; Tempus ((rok: 2013, mesiac: 1, deň: 1)). Formát ("% d.% Q.% y"); // uchovávať (ďalej len "rok": 2013, "mesiac": 2, "deň": 10, "hodiny": 0, "minúty": 0, "sekundy": 0); Tempus ("10.2.2013", "% d.% Q.% y"). Dostať ();
Pri registrácii môžete vidieť, že niektoré parametre sú špecifikované samostatne, zatiaľ čo by sa mohol použiť regulárny výraz. V skutočnosti to bolo pôvodne to bolo, ale po odmietnutí, rýchlosť vzrástla niekoľko desiatok časov.
Ak potrebujete vymazať nejaký formát, použite UnGregisterform:
Tempus.unregisterform ("% D"); // vrátiť "% D.01.2013", pretože Smernica% D už neexistuje. Tempus.format ((rok: 2013, mesiac: 1, deň: 1), "% d.% M.% Y");

Getter / setsings

Niektoré hodnoty môžete prijímať / nastaviť pomocou funkcií roka (), mesiac (), deň (), hostiteľov (), minút (), sekundy (), miliseconds (), dayofweek (), UTC (), Časová značka () alebo nastavená (). Napríklad:
Tempus (). // Získajte aktuálny rok Dátum (1900). // Nechajte všetko, čo je, ale nainštalujeme 1900 medveďu (); // kontrola, či je tento rok rok, v tomto prípade nepravdivé tempus (). Rok (); // a tak dostaneme aktuálny rok v numerickej forme

Generácie.

Môžete generovať dátum s množstvom spôsobov, úplný zoznam parametrov je v dokumentácii. Tu je minimálny príklad.
// vráti ["03/29/2013", "03/30/2013", "03/31/2013", "04/01/2013", "04/02/2013"]; Tempus.generate ((DATEPROL: "20130329", formátFROM: "% y.% M.% D", Dateto: "20130402", obdobie: (deň: 1), formát: "% d.% M.% Y" ));
To môže byť užitočné pre zobrazenie grafov podľa dátumu a zmeňte formát zobrazenia priamo na klienta, bez požiadaní na backend. Dátum môže byť generovaný ako pole, ako aj objekty, kde sú samotné dátumy, pretože kľúče (to je užitočné, keď potrebujeme viazať akúkoľvek udalosť na akýkoľvek dátum, napríklad, keď urobíme váš kalendár). Termíny môžu byť zoskupené podľa dňa, týždňov, mesiacov, hodín, rokov - pre čokoľvek. Môže sa použiť aj na kalendár.

Pluginy

No, posledné pluginy. Tu rozširujeme továreň na generovanie náhodného dátumu. Tiež budeme potrebovať TEMPUSDATE triedu, nachádza sa v TEMPUS.CLASSEES (). Tu je príklad pluginu:
(Tempusdate \u003d tempus.classes ("tempusdate"); tempus.Randomdate \u003d Funkcia () (var dátum \u003d Nový Tempusdate (); Dátum.Year (Math.floor ((Math.Random () * (Tempus.max_year - Tempus. MIN_YEAR) + tempus.min_year). mesiac (Math.floor ((Math.Random () * (TEMTHUS.MAX_MONTH - TEMPUS.MIN_MONT)) + TEMPUS.MIN_MONTH)). deň (matematika. podlaha (Math.Random () * (DATE.DAYCOUNT () - tempus.min_day) + tempus.min_day). ). Minúty (Math.floor ((Math.Random () * (TEMTHUS.MAIN_MINUTY)) + TEMPUS.MIN_MINUTY)). Sekundy (Math.floor ((Math.Random () * (Tempus.max_seconds - Tempus.Min_seconds) ) + tempus.min_seconds); dátum návratu;);)) (tempus); // Teraz môžeme vytvoriť dátumy podľa VaR somerandomdate \u003d tempus.Randomdate ();
Myslím si, že týmto spôsobom bude vhodné písať widgety pomocou jQuuery + tempus, uhlové + tempus a podobne. 7. decembra 2014 o 12:30

Dátum a časové problémy v JS

  • JavaScript.

Zriedkavé programátor sa deje, aby sa zabránilo práci s dátumom a časom. Všeobecne platí, že dátum / čas je základným konceptom a väčšinou jazykov Existujú vstavané mechanizmy na prácu s týmto typom údajov. Zdá sa, že JS nie je výnimkou, existuje vstavaný typový dátum, existuje veľa funkcií v prototypom, avšak ...

Kto je vinný
Prvý problém sa vyskytuje, keď potrebujete nastaviť dátum / čas v časovej zóne inej ako UTC a od lokálneho. Dizajnár dátumu nemá takýto parameter.

Nový dátum (); Nový dátum (hodnota); Nový dátum (datastring); Nový dátum (Rok, mesiac [, deň [, hodina [, minute [druhá [, milisecond]]]];
Jediná možná možnosť, kde môžete zadať posun vzhľadom na UTC - tretiu metódu. Výzva konštruktéru v tomto formáte umožňuje prenos posunu ako súčasť riadku:

Nový dátum ("Sun FEB 01 1998 00:00:00 GMT + 0700")
Riadok je prijatý vo formáte RFC2822, veľmi nepohodlný a ťažko manuálne vstup. Je takmer nemožné získať taký reťazec z vstupu používateľa. Nemôžem si predstaviť osobu, ktorá súhlasila so zadaním dátumu v takomto formáte.

Napriek tomu, že v dátume môžete nastaviť všetky parametre samostatne pre časy UTC - problémy sa nevyriešia - časový limit zostane miestny. Ale toto nie je jediný problém.

Offset relatívne k UTC nie je konštanta. Ide o funkciu dátumu, času (no, alebo z Timeshampu, ak prosím) a znova, časové pásmo. Napríklad pre Moskvu, posledný časový prenos dáva:

Nový dátum (2014, 9, 25, 0, 0, 0); // 26.10.2014, 21:00:00 GMT + 3 Nový dátum (2014, 9, 27, 0, 0, 0); // 25.10.2014, 22:00:00 GMT + 4
Dizajnér v tretej verzii sa teda stáva takmer zbytočným, pretože posun musí byť vopred známy. A to, ako bolo povedané, tak jednoducho prijaté. Jediná knižnica, z i dostala, ktorá používa databázu Olson pre posun posunov - TimeZone-JS. Problémom používania tejto knižnice je, že podzemné knižnice (dátum / čas picker-s) nič nevedia a neuvidia štandardný dátum vo vnútri. Zostávajúce knižnice pracujúce s objektom dátumu jasne neodkazujú na túto databázu a aktualizácie sa z nej nedostanú. (Opravte ma v komentároch.)

Podnikanie používania časového pásma dáva zmysel len vtedy, ak sú špecifikované dátum a čas. Ak napríklad pracovný deň začína v 9:00, je nepravdepodobné, že by ste očakávali, že váš kolega z Vladivostok začne pracovať o 15:00. Timesons by sa nemali brať do úvahy av tomto prípade musíte zobraziť dátum v UTC. Avšak, v prípade pravidelných udalostí vyskytujúcich sa v jednom okamihu v rôznych časových pásmach, Timeson je stále potrebný. Napríklad vaša každodenná jazva začína o 10:00 pre vás a o 13:00 pre Novosibirsk. Mimochodom, to je presne rozdiel medzi GMT a UTC. UTC je čas bez posunu a GMT je čas s posunom 0. Vysvetlím sa na príklade:

12/31/2014, 20:59:59 GMT v Moskve časovej zóne by mala vyzerať ako 12/31/2014, 23:59:59 12.12.2014, 20:59:59 UTC v časovej zóne Moskvy by mala vyzerať na 12/31/2014, 20:59: 59.
Kvôli tomuto aritmetiku sú hlavne zmätení. Bohužiaľ, obývané týmto parametrom všade. Nedostatok priamej indikácie Timesone v JS sa interpretuje ako miestny časový limit a výučba UTC a GMT je ekvivalentná.

V situácii by som mohol pomôcť Intl. Mohol, ale nie je povinný. Predovšetkým existuje takýto parameter timezón, ale trochu ďalej, štandard definuje: časové pásmo na použitie. Jediná hodnota implementácie musia uznať "UTC". V súčasnej dobe, okrem Chrome, nie jeden prehliadač ľubovoľný časový limit nepodporuje.
S časovými pásmi v JS, všetko je úplne zlé - nie je nič také v jazyku. Chcete robiť dobre - robiť sám.

Čo robiť
  • Možnosť 1.
    Nepoužívajte ľubovoľný Timson. Možnosť je vhodná a pravdepodobne najbolestnejšia. To znamená, že máte len miestne časy a UTC. Pre tieto prípady vo všetkých prehliadačoch sa zdá, že všetko je, aj keď nie je veľmi pohodlné. Okrem toho je Timeson nastavený na celom svete pre OS a zmeniť ho pre špecifickú webovú aplikáciu je notocherly.
  • Možnosť 2.
    Ak sú potrebné ľubovoľné časy - nepoužívajte časovú značku. Vôbec. Doba skladu v šeku úspor v RFC reťazci označujúci časové lišty. Nie ste si istí, že to pomôže poraziť časovača posuny v prehliadačskom porozumení, ale aspoň chróm o takýchto posunom v poznaní.
  • Možnosť 3.
    Existujú rôzne situácie a stáva sa, že v databázovom čase sa zaznamenáva s ľubovoľným zariadením. To znamená, že vo forme Timestampy. Neexistuje žiadne miesto na spustenie, ktoré by správne zobrazil čas, ktorý potrebujete vedieť buď čason zariadenia, alebo Thaimon užívateľa, alebo oboch druhých a identifikovať všetky posuny v ruke. Bez použitia základne Olonu tu nerobte.
  • Musí existovať morálka tejto bájky, ale nie je nič viac, čo ma pridáte. V návrhu štandardu ECMA nepozorujem žiadny pokrok, pravdepodobne nebudete.

Ďalšou užitočnou vecou pre stránky je vloženie aktuálneho dátumu. Príklady dátumov Skripty možno nájsť na internete desiatky, ale mnohí z nich sú podľa môjho názoru ťažké a preto škaredé. Medzitým pomocou štandardných nástrojov JavaScript., Vložte dátum na stránke stránky môže byť veľmi jednoduchá. Často to aplikujem! Na obrázku (Screenshot z operačného miesta) manor "Fairy Tale" !

Tu je celý skript dátumu:

Podľa môjho názoru je to jednoduchšie nikde, celkom krásne a zrozumiteľné. Ak nemáte žiadnu túžbu študovať konštrukciu tohto skriptu, potom ju jednoducho vložte do akéhokoľvek miesta stránky HTML a získajte nasledujúci nápis:

Ešte jedna možnosť pokročilejšieho


! Dnešok

Vyzerá to takto:

Dnešok

Vo všeobecnosti nie sú potrebné žiadne zručnosti, len hlúpe vložte kód a všetko je v poriadku!

Čítaj viac:

Začnite s priradením hodnoty dátumu premennej d., potom vytvorte polia ( Pole.) Pre dni v týždni ( deň.) a mesiacov ( mesiac.), ktorý ich označuje v potrebnej gramatickej forme: prípad, číslo, titulný list, ak je slovo na začiatku dátumu atď. Posledný riadok skriptu v skutočnosti vytlačí dátum ( dokument.write.). Tu nainštalujete, že v ktorej sekvencii sa zobrazí v riadku aktuálneho dátumu. Zložky sú od seba oddelené. + . Konštrukcia sa používa na vstup do priestoru " " a za vstup do písmena g (rok) - dizajn "G."

Ako je možné vidieť z skriptu, prijímanie údajov o aktuálnom čase vykonáva prvok dostať.. Táto metóda vám umožňuje získať nasledujúce informácie:

  • getdate () - vráti číslo od 1 do 31, čo predstavuje počet mesiacov;
  • guedada () - vráti deň v týždni ako celé číslo od 0 (nedele) do 6 (sobota);
  • getmonth () - vráti počet mesiacov ročne;
  • gettelear () - vráti rok. Ak používate jednoduché getyear ()Potom bude aktuálny rok výstup mínus 1900;
  • získať hodiny () - vráti hodinu dňa;
  • getminutes () - vráti chvíle ako číslo od 0 do 59;
  • geseconds () - vráti počet sekúnd od 0 do 59.

Vložte priamo Java.Skript vo vnútri stránky stránky nie je vždy pohodlný. Je lepšie dať popis skriptu do hornej časti stránky medzi značkami A nastavte premennú, ktorú zavoláme podľa potreby v texte. Zavolajme to Dnes. A definujeme výstupný formulár v ňom podobne ako vyššie uvedený. Skript bude vyzerať takto:

Ak chcete zobraziť dátum, zavolajte na pravým miestom stránky HTML stránky pomocou nasledujúceho príkazu:

Ak vaše stránky obsahuje mnoho strán, na ktorých chcete zobraziť dátum, je vhodnejšie prideliť Java.Napríklad výstupné dátumy skriptu v samostatnom súbore, napríklad, data.js.. Prakticky, toto je stránka pozostávajúca z prvých opísaných skriptov, to znamená s reťazcom dokument.write. (viď vyššie). Je potrebné, aby ste ho mali v tom istom adresári ako hlavná stránka, a spôsobiť dátum na výstupnom mieste nasledovne:

Nezabudnite si skontrolovať súbor data.js. Mal rovnaké kódovanie ako hlavného dokumentu, inak bude dátum odstránený s nádhernými háčikmi, štvorcami a inými FINTYPHUSHKI.

Komentár. Treba mať na pamäti, že opísaný skript zobrazí dátum nastavený na počítači používateľa, ktorý nie vždy zodpovedá skutočnému aktuálnemu času. Ak potrebujete zobraziť presný čas, musíte použiť skript PNP, ktorý zobrazí čas na serveri.

Získajte aktuálny dátum v JavaScript je veľmi jednoduchý. Na tento účel je určený cieľ dátumu. Jeho syntax je pomerne jednoduchá a mená metód intuitívne zrozumiteľné. V nasledujúcich príkladoch ukážem, ako pracovať s objektom dátumu ( JavaScript Nový dátum.) Ak chcete získať aktuálny rok, mesiac, deň a čas s presnosťou milisecond!

Prijímanie aktuálneho dátumu:

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

dátum VAR \u003d Nový dátum (); Konzola.log (dátum);

Tento kód zobrazuje nasledujúce informácie do konzoly:

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

Zobrazuje aktuálny deň v týždni, aktuálny mesiac, deň mesiaca, rok a dokonca aktuálny čas v 24-hodinovom formáte. Fragment " GMT."Znamená greenwich čas a" -0500 "Toto je rozdiel v časových zónach medzi miestnym časom a GMT.

Citát z Wikipédie: "Priemerný čas Greenwicha ( GMT.) - Toto je sekundárny slnečný čas v kráľovskej observatóriu v Greenwich, Londýne. " Je spojený univerzálny koordinovaný čas (UTC.). « Východný Štandardný Čas."V zobrazenom dátume odkazuje na časové pásmo prehliadača alebo počítača.

* Upozorňujeme, že GMT a UTC sa navzájom líšia. Budeme zvážiť hodnoty UTC v minútach.

* Všimnite si tiež, že dátum v Javascript je určený časom v milisekundách, ktorý odovzdal od polnoci, 1. januára 1970, UTC. V jednom dni 86,400 000 milisekúnd. Rozsah objektu dátumu je od -100 000 000 dní do 100 000 000 dní v porovnaní s 1. januárom 1970, UTC.

* Hodnoty získané pomocou vyššie uvedeného spôsobu sú závislé od nastavení systému vášho zariadenia. Ak zmeníte nastavenia hodín počítača, čas, ktorý sa vráti túto metódu, sa zmení.

No, sme sa zaoberali novými formátmi JavaScript a teraz sú pripravení ísť ďalej!

Dostať deň v týždni:

Ak chcete získať deň v týždni, použite metódu Dátum objektu JavaScript GULDAY ():

vAR DAY \u003d DATE.GETDAY (); Konzola.log (deň);

* Upozorňujeme, že dni v týždni sú očíslované od 0 do 6, nedeľa \u003d 0, pondelok \u003d 1, utorok \u003d 2 a tak ďalej.

Získanie mesiaca:

Ak chcete získať aktuálny mesiac tohto roka, použite metódu getmonth (). Predtým som povedal, že mená metód intuitívne chápu!

var mesiaca \u003d dátum.getmonth (); Konzola.log (mesiac); // jeden

* Upozorňujeme, že ako dni v týždni sa mesiace vrátia v číselnom formáte od 0 do 11; Január \u003d 0, február \u003d 1, marec \u003d 2 a tak ďalej.

Dostať deň v mesiaci:

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

var dayofmonth \u003d dátum.getdate (); Konzoly.log (dayofmonth); // 2.

* Metóda Getdate () vráti dni v mesiaci, číslované od 1 do 31; Číslo 1 zodpovedá prvého dňa mesiaca.

Dostať čas:

Ak chcete získať aktuálny čas, použije sa metóda getme ().

var čas \u003d dátum. Konzola.log (čas); // 1454461242058.

Vyzerá ... Podivné ... Čo je to? Vidíte počet miliseconds, ktoré prešli od 1. januára 1970 00:00:00 UTC. Ako je to staré?

1454461242058 MS / 31540000000 ms ročne \u003d približne 46 rokov
1970 + 46 rokov \u003d 2016

Skontrolujme, aby ste sa uistili:

var ročne \u003d dátum. Console.log (ROK) // 2016

Áno, to je ono! Práve sme priniesli aktuálny dátum a čas pomocou nového dátumu JavaScriptu.



Páči sa vám článok? Zdieľaj to