Zobrazení data a času Jak to udělat správně
Narazíme na ně data a čas… no, každý den. Pokud jde o web, můžete je nacházet v mobilních aplikacích, v e-mailech, v aplikacích zasílání zpráv a na mnoha dalších místech. Přesto navzdory tomu, že každý den a všude vidíte datum a čas, ještě musíme přijmout univerzální formát.
Například, když píšu 10/05/2015, nikdy si nemůžete být jisti, zda "10" je měsíc nebo datum, pokud vám neřeknu, odkud jsem. Někdy se změní formát, jindy jazyk.
Je důležité, abychom jako vývojáři webu věnovali pozornost datu a času, se kterým se v našich projektech zabýváme, abychom mohli uspokojit je různými geografickými obyvateli bez konfliktu. V tomto příspěvku budeme diskutovat co se vyhnout a co přijmout pokud jde o zobrazení data-time.
Globalizace
Řekněme, že nechceme převádět a zobrazovat různé formáty data a času různým divákům po celém světě, co můžeme dělat? Vybíráme jeden globální formát a držíme se ho. Zde přicházejí do hry některé standardy. Než se k tomu dostaneme, musím poradit, že společnost W3C doporučuje používat formát data ISO 8601 s časovým pásmem UTC.
ISO 8601
ISO 8601 popisuje mezinárodně uznávaný způsob reprezentování dat a časů pomocí čísel.
Formát pro úplné datum je; RRRR-MM-DD
, například: 2015-07-28
RRRR = 4místný rok
MM = 2místný měsíc (01 = leden atd.)
DD = 2místný den (01 až 31)
Pro kompletní datum-čas;RRRR-MM-DDThh: mm: ss.s
, například: 2015-07-28T21: 15: 18.45
T = Oddělit datum a čas podle ISO 8601
mm = 2-místné minuty (00 až 59)
ss = 2místná sekunda (00 až 59)
s = desetinný zlomek sekundy, 1 nebo více číslic
Vezměte prosím na vědomí, že ve výše uvedeném příkladu není uvedeno žádné časové pásmo, takže se předpokládá, že čas je v místním časovém pásmu. Pokud jste se rozhodli použít UTC timezone, stačí přidat Z na hodnotu označující UTC
Například: 2015-07-28T21: 15: 18,45Z
Pokud však chcete zobrazit místní čas, můžete přidat a posun časové zóny pro UTC na hodnotu ve formátech +hh: mm
nebo -hh: mm
podle potřeby.
Například: Předpokládejme 2015-07-28T21: 15: 18.45
je v časovém pásmu EST (Východní standardní čas), které zaostává o 5 hodin za časovým pásmem UTC.
Pro reprezentaci s UTC offsetem píšeme 2015-07-28T21: 15: 18.45-05: 00
který je ekvivalentní času UTC 2015-07-29T02: 15: 18,45Z
.
Znovu Z znamená, že zobrazený čas je v UTC čase.
UTC vs. GMT
Oba jsou stejně rozdílní. Doposud jste pravděpodobně narazili na GMT alespoň jednou; při nastavování data a času v mobilním telefonu nebo počítači. To je nejvíce populární časové pásmo rozpoznané celosvětově protože to bylo v existenci delší než UTC.
Zatímco někteří mohou říci, že oba jsou stejní, ale nejsou, UTC je nástupcem GMT a je udržován Mezinárodní telekomunikační unií. Doporučuje se odkazovat na čas na základě UTC a ne GMT.
Použijte název měsíce
Norma ISO používá pouze čísla v datové reprezentaci, aby se zabránilo konfliktům s jazykem. Pokud však bude obsah vaší webové aplikace v angličtině, měli byste zvážit, zda byste měli psát měsíce v angličtině a ne v číslech.
Namísto 2015-07-28
, 28. července 2015
je mnohem srozumitelnější a méně matoucí.
Lokalizace
Jsou chvíle, kdy chceme být s našimi službami velmi specifičtí a rádi bychom reprezentovali datum a čas v místních časových pásmech a jazycích. Pro vývojáře webových stránek je k dispozici mnoho knihoven a rozhraní API, které využívají a zobrazují data a časy podle regionu přístupu.
Výchozí národní prostředí prohlížeče můžete získat buď interpretací Přijmout-jazyk
nebo záhlaví navigator.language nebo navigator.browserLanguage
JavaScript objekt, ale nejlepší metodou je nechte uživatele vybrat si národní prostředí ve vaší aplikaci protože dřívější způsoby nejsou příliš spolehlivé.
Jakmile máte národní prostředí, můžete datum formátovat podle něj, například pomocí Internacionalizační API, můžete formátovat datum pomocí toLocaleDateString
v JavaScriptu, myDate.toLocaleDateString ('ko-KR')
vrátí formátované datum ve formátu používaném v Koreji korejsky mluvícími domorodci.
Letní čas (DST)
V některých zemích se letní čas provádí přesměrováním hodin o hodinu v létě, aby se využilo dostupné sluneční světlo. Buďte si vědomi DST, abyste udrželi krok s místními časy ve vašich službách.
Bez dvouciferného roku
Při přizpůsobení data a času pro lokalizaci v žádném okamžiku nepoužívejte dvoumístný formát pro rok. Už jsme v 21. století. Použití let jako 64
, 99
budou v budoucnu problematické. Pokud již máte zaveden dvoumístný roční systém, zvažte jeho změnu.
Leap rok a další kalendáře
Ukončíme tento post s některými různými věcmi, které bychom si měli pamatovat při práci s daty. Pokud nepoužíváte žádnou knihovnu nebo API pro data a rádi byste se s nimi vypořádali sami (což je ne doporučeno, nicméně), nezapomeňte ukázat 29. února ve vstupu pro přestupné roky.
Také stojí za zmínku, že Gregoriánský kalendář není jedinou formou dostupného a používaného kalendáře po celém světě. Existuje jen málo regionálních kalendářů, které místní obyvatelé sledují, zejména pokud jde o slavnosti.
Reference
- Mezinárodní telekomunikační unie: Studie stavu koordinovaného univerzálního času (UTC) v ITU-R
- ISO: ISO 8601 - Formát data a času
- Wikipedia: Koordinovaný univerzální čas
- Wikipedia: Letní čas
- Wikipedia: Greenwichský střední čas
- W3C Poznámka: Formát data a času
- Tipy W3C: Použijte mezinárodní formát data (ISO)