Jedna z výhod malého českého prostředí je v tom, že se rozkládá pouze v jednom časovém pásmu. Na webhostingu tedy může být časové pásmo nastaveno na CET, ve skriptech se nemusíme o nic starat a všem lidem se čas bude zobrazovat správně. Pokud se na stránku náhodou podívá někdo ze vzdáleného zahraničí, tak zobrazovaný čas pochopí jako místní čas serveru a na svůj čas si ho dokáže převést.
Problém ale nastává u serverů, kde není na první pohled patrné, do jakého časového pásma patří. Když je na anglicky psaném serveru uvedeno, že článek vyšel ve 14:00, můžeme o převodu na náš čas jen spekulovat. Na někoho může působit divně i to, že když příspěvek do diskuse vložil v 18:00, tak se u něj zobrazuje, že ho vložil ve 14:00. Pokud tedy z kontextu serveru není patrné, v jakém leží časovém pásmu, je slušné to někam uvést (pro zdůraznění světovosti za všechny časy nebo decentně někam do informací o serveru).
Ideální by bylo časové pásmo nastavovat podle přání klienta. Prohlížeče ale informaci o svém časovém pásmu bohužel neposílají a co hůř – ve standardu na to ani není vyhrazena žádná hlavička. Jedinou možností tak zůstává časové pásmo odhadnout z IP adresy nebo ho nechat uživatele zvolit.
Nastavení časového pásma skriptů od PHP 5.1 zajišťuje funkce date_default_timezone_set nebo konfigurační direktiva date.timezone, ve starších verzích k tomu slouží nastavení proměnné prostředí TZ funkcí putenv. MySQL časová pásma podporuje od verze 4.1. V nižších verzích je potřeba dát pozor na současné používání funkcí typu NOW spolu s přímým zadáním času. Hodit by se mohla funkce UNIX_TIMESTAMP, která vždy vrací počet vteřin od půlnoci 1.1.1970 GMT.
Přijďte si o tomto tématu popovídat na školení Návrh a používání MySQL databáze (29.9.2010, Praha).