25.01.2023, Vladimír Klaus, navštíveno 707x

ASP.NET/C#
Delphi
JavaScript
SQL
SQL Server
Systém
Windows

Tato série článků bude postupně doplňována všemi možnými způsoby práce s datumem a časem v jazycích a systémech, které používám. Každý programátor jistě potvrdí, že toto je jedna z nejhorších oblastí, kde skoro nic není standardem a zajistit korektní zpracování těchto údajů není snadné.

V čem je u datumů vlastně tedy problém:

  • různé národní zápisy vč. různých oddělovačů
  • různé formáty nastavené uživatelem či výrobcem v zařízení
  • zimní/letní čas
  • posun proti GMT
  • různé normy s komplikovanými zápisy

Normy

Jasně, normy tu jsou a občas je někdo i dodržuje, takže pokud máte to štěstí a najdete i odpovídající funkce, které s těmito normami umí, může to být fajn. V každém případě jsou normy složité, často umožňují různé zápisy a je proto nanejvýš vhodné pro zpracování takových údajů používat ověřené knihovny a nesnažit se parsovat text vlastními silami.

ISO8601

ISO 8601 je mezinárodní norma pro zápis data a času, kdy jsou prvky data řazeny od údajů o delších časových úsecích po údaje o nejmenších při standardním počtu znaků, tedy např.:

  • 28. 1. 2023 -> 2023-01-28, 2023-01-28T00:00:00+00:00
  • 28. 1. 2023 19:50:37 -> 2023-01-28T19:50:37+00:00

RFC 822, RFC 2822

Jedná se o formát dat přenášených po internetu, (kapitola "3.3. Date and Time Specification") vytvořený s cílem jednotné reprezentace data a času, používaný v kódu HTTP a hlavičkách e‑mailových zpráv. Výše uvedené příklady:

  • 28. 1. 2023 -> Sat, 28 Jan 2023 00:00:00 CET
  • 28. 1. 2023 19:50:37 -> Sat, 28 Jan 2023 19:50:37 CET

UNIX

Jde o počet sekund nebo milisekund (záleží na systému) od 1.1.1970 (Unix Epoch time), takže opět výše uvedené příklady:

  • 28. 1. 2023 -> 1674860400000
  • 28. 1. 2023 19:50:37 -> 1674931837000

V dalších článcích bych se chtěl věnovat práci v těchto jazycích a systémech (bez záruky):

  • Delphi
  • C#
  • JavaScript/TypeScript
  • SQL Server
  • Příkazový řádek Windows (CMD)
  • Regulární výrazy

Zdroje: