.NET Framework nabízí třídy, které nám práci s datem a časem v různých časových pásmech maximálně ulehčí. Zároveň minimalizuje nutné znalosti o pásmech v případě, že nás nezajímají, což může být většina psaných aplikací.
Než se pustím do popisu tříd v .NET a typů v SQL Serveru a jejich použití, věnuji tento první díl nutné teorii. Ačkoliv většina z vás bude následující odstavce již znát, pro úplnost vše zopakuji.
Časová pásma
Svět je rozdělený do různých oblastí podle časového pásma (anglicky time zone). Například Česká Republika společně s řadou dalších zemí (Maďarsko, Slovensko, Německo, Polsko, Francie, Řecko…) spadá do pásma UTC+1. Toto označení znamená, že čas je zde o jednu hodinu větší, než čas UTC – Coordinated Universal Time. Označení UTC bývá často zaměňováno s jeho méně přesným předchůdcem GMT (Greenwitch Mean Time, pojmenované podle observatoře v městě Greenwitch). Občas se také UTC označuje jako zulu time, což vychází ze zástupného slova “zulu” pro písmeno “z” ve slově ”zero” (angl. nula) a znamená časové pásmo s odchylkou 0 hodin (UTC+0).
Na rozdíl od České Republiky existuje nemalá řada zemí, které na svém území nespadají jen do jednoho časového pásma. Příkladem může být USA s rozsahem UTC-5 až UTC-10. Z toho důvodu nelze jednoznačně říct, která země spadá do kterého časového pásma. Což je také jeden z důvodů, proč v .NET jazycích není možnost, jak získat z kultury (třída CultureInfo) časové pásmo.
Také se můžete setkat s několika málo oblastmi, které nemají posun oproti UTC v celých hodinách. Příkladem jest Austrálie ležící v pásmech UTC+8, UTC+9:30 a UTC+10.
Letní čas
Celý doposud jednoduchý model výrazně komplikuje letní čas - anglicky summer time, či obecnější daylight saving time neboli DST. Jeho smyslem je oddálit stmívání proti času na hodinách dočasným posunutím ručiček o hodinu vpřed. Díky tomu se na území České Republiky dostáváme na určitou část roku, po kterou je platný letní čas, z pásma UTC+1 do pásma UTC+2.
Prvním problémem je fakt, že ne všechny oblasti letní čas používají. Pokud budete tedy chtít vědět, jaký je čas v jiné zemi, nestačí vám znát pouze naše a jejich časové pásmo, ale také informace o letním čase.
Druhým ještě zásadnějším problémem je rozsah platnosti letního času. V každé oblasti využívající letní čas totiž může začínat a končit v jinou hodinu a den. Představte si například data 5. března, 15. března a 28 března. Dne 5. března není ani u nás, ani v USA letní čas a rozdíl hodin mezi námi (UTC+1) a USA (UTC-7) je celkem 8 hodin. V polovině měsíce u nás stále letní čas nezačal, kdežto v USA už ano (UTC-7 → UTC-6) a rozdíl se tak sníží na 7 hodin. Teprve až ke konci měsíce přecházíme na letní čas i my (UTC+1 → UTC+2) a rozdíl se opět zvyšuje na původních 8 hodin.
Tyto komplikace mohou způsobit řadu nedorozumění a proto se často při komunikaci mezi lidmi i počítačovými systémy v různých pásmech používá univerzální čas UTC, do kterého zkonvertuje svůj lokální čas ve specifické oblasti příslušného systému a informaci uloží nebo zašle dále již v tomto formátu.
Nastavení pásma v systému
Nastavení pásma a oblasti vybíráte běžně při instalaci systému a následně jej můžeme změnit v nastavení data a času za běhu systému. Nastavení je rozděleno podle oblastí se stejným pásmem a stejnými pravidly pro letní čas. Tyto oblasti se obvykle označují názvem města, což je pro Českou Republiku pochopitelně Praha. Na následujícím obrázku je panel pro nastavení data a času v systému Windows.