Prikaz date s posuvem casu a posun letni/zimni cas

Petr Simek psimek na jcu.cz
Úterý Říjen 9 21:30:55 CEST 2018


On Tue, 9 Oct 2018, Pavel Kankovsky 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?

Zajimavy napad, napred si vypsat timezonu, vytahnout z ni hodinu,
pak nastavit TZ=0000 a tu hodinu puvodni timezony pridat do toho
posunovaciho retezce. Pak to da v obou pripadech stejnou vyslednou
hodinu.

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

To ne, ten retezec v tom prikladu byl zjednoduseny, ja tam mam v zadani
posunu i hodiny, tydny, mesice. Ale to vyse uvedene funguje protoze
do toho posunovaciho retezce je mozne zadat hodinu 2x a ono to proste
spocita dohromady. date je zajimave flexibilni program.


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

*------------------------------------------------------------------------*
|                          Petr Simek   APS JU                           |
|                             psimek na jcu.cz                              |
*------------------------------------------------------------------------*


Další informace o konferenci Linux