Prikaz date s posuvem casu a posun letni/zimni cas

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Úterý Říjen 9 16:15:06 CEST 2018


On Tue, 9 Oct 2018, Petr Simek wrote:

> Zrejme to nepripocitava jako dny ale spocita velikost pridane hodnoty
> ve vterinach a tu pak pripocte k casu ve vterinach a vysledek pak
> zkonvertuje podle casove zony ktere v te dobe bude platit.

Ve skutečnosti to dělá složitěji. Rozloží výchozí čas na komponenty 
(struct tm), příslušnou komponentu (v tomto případě tm_day) změní o zadaný 
počet a pak to vyhodnotí voláním mktime().

Problém je, že ponechá původní hodnotu pro nastavení letního času 
(tm_isdst), a tudíž se to mktime() pokusí po překročení hranice 
kompenzovat, což způsobí pozorovaný posun.

> Nemate napad jak to objejit aby nepohnul s tou hodinou ?

Počítat to formálně v časové zóně, kde není letní čas?

Rozdělit od sebe výchozí datum a čas, posunout jen datum a vrátit tam 
původní čas?

-- 
Pavel Kankovsky aka Peak                      "Que sçay-je?"


Další informace o konferenci Linux