Posun času a zájezd na 6,958333 nocí

Posun času a zájezd na 6,958333 nocí
Je tu zase změna zimního času na letní. Pro mnohé z nás je to nepříjemná změna v rytmu dne, ale na překvapení tento časový posun dokáže vykolejit i zkušeného programátora. Z jedné takové podzimní změny času máme s odstupem už veselou příhodu.

Pro cestovní kancelář jsme celou letní sezónu úspěšně provozovali jejich nový web, na kterém je u každého zájezdu uveden den odjezdu a den příjezdu. Na webu je zobrazena i délka zájezdu a podle ní jsou zájezdy také rozděleny (4, 7, 10 a 14 nocí).  Všechno krásně celou letní sezónu fungovalo, až do října nám klient nahlásil chybu - na webu měly některé zájezdy zobrazenou délku 3,958333 noci resp. 6,958333 noci. Namísto správných 4 nocí, resp. 7 nocí.

Samozřejmě jsme to jednoduchým zaokrouhlením opravili hned. Ale nedalo nám to a chtěli jsme zjistit, proč nám to najednou počítá špatně. Dlouho jsme hledali, kde jsme udělali chybu při rozdílu dvou datumů, které se v PHP počítají jako sekundy od roku 1970, že nám to náhle na pár zájezdech zobrazuje divné počty nocí.

Jak už asi tušíte, problém byl v tom, že mezi začátkem a koncem zájezdu byl den, kdy se posouval čas, a ten "měl" 25 hodin, což je o 3600 sekund více, a tím pádem rozdíl mezi daty dělený 24*60*60 vyšel "divně" - jako uvedené počty nocí.

Správné řešení je použít při výpočtu funkci strtotime() ve formátu strtotime("+1 day") namísto počítání pomocí 24*60*60 sekund. 

Takto napsané to vypadá jednoduše, ale v dané chvíli to byl tvrdý oříšek. Někdy dávno, když jsme posuny času na počítačích nastavovali ještě manuálně sami, by nás to možná napadlo dříve.

Máte podobnou příhodu s posunem času a programováním? Sem s ní...

Přečtěte si také

Konzultace zdarma

S čím byste potřebovali pomoci?

Vyberte všechny možnosti, které se vás týkají

Potřebujete ještě s něčím pomoci?

Vyberte si další oblast

Zanechajte nám na vás kontakt

Formulář byl úspěšně odeslán.