letni/zimni cas - chci algoritmus

Stepan Husek husek
Středa Březen 17 11:54:16 CET 2004


> potrebuju naprogramovat RTC s automatickym prechodem mezi letnim a zimnim
> casem. Nemate na to prosim nekdo nejakej algoritmus? Nikdy jsem nezkoumal,
> jestli je to pravidelny, ze se to x.y v z:00 posune o hodinu dopredu nebo
> zpet. Nebo je to kazdy rok jinak?
> 
> A prestupny rok => unor ma 29dni, kdyz (ROK modulo 4)=0 ,ze jo?

Tady mate kus clanku, ktery to presne popisuje:

Rok 2000 je prestupny rok. Prestupnost roku se totiz pozna podle techto 
tri pravidel (z nichz to posledni byva zapomenuto i na takovych mistech 
jako je vysoke skolstvi):

1. Prestupny rok je takovy, ktery je delitelny ctyrmi 
2. ale nesmi byt delitelny 100 
3. s vyjimkou toho kdy je delitelny 400 

Rok je dlouhy 365.24219 dne. Diky tomu vznikla potreba prechodneho roku
(leap year), ktery kazdy "cvrty" rok pridava navic jeden den - dohani 
tak onu necelou ctvrtinu. Bohuzel pro nas se prechodne roky jaksi 
opomnely vsouvat az do roku 8. Nekolik neuspesnych pokusu o napravu 
nasledovala oprava v roce 1582 - kdy 15.rijen nasledoval 4.rijen - 
a prave tehdy vstoupila podminka s 400kou v platnost.

Soucasny Gregoriansky kalenar bere rok jako 365.2425 dne....

A aby nebylo legraci konec, nektera mista na zemi neracila akceptovat
prestupne roky po dobu nekolika dalsich stoleti a tak v ruznych letech
racili skakat o spoustu dnu. Napriklad v roce 1752 skok o 12 dni 
(2.9 - 14.9) v Britanii a koloniich. 

Z uvedenych cisel mimochodem plyne ze by melo byt zavedeno ctvrte 
vyjimkove pravidlo - pokud je rok delitelny 3200 tak to neni prestupny
rok.
(konec citatu)

Stepan Husek






Další informace o konferenci Hw-list