Jeg forstår ikke helt hvad du mener med "systemuret", men du skriver, at det
skal være ud fra en given dato.
Windows er desværre indrettet meget uheldigt på dette. Al omregning mellem
lokal tid og UTC beregnes ud fra, om det er sommertid eller vintertid lige
nu, og ikke ud fra sommertid eller vintertid på den dato, som omregningen
skal gælde for.
En af de ting, der umuliggør dette, er at tidszonen indstilles ud fra de
nuværende landegrænser, men f.eks. har Tyskland jo haft flere tidszoner
samtidigt i historisk tid, hvilket gør det umuligt for Windows at lave
historiske sommer/vintertids håndtering.
Under Linux håndteres det på den måde, at man angiver tidszonen som en by,
f.eks. København. Der ligger så en lille programstump, som kan omregne
enhvert tidspunkt i UTC til lokal Københavns-tid, uanset om det er
historisk eller i fremtiden. Fremtidsomregningen er dog ikke alt for
præcis, da man må påregne ændringer i tidsregningen i Danmark. Sidste gang
tidsregningen blev ændret, var i forbindelse med EU harmoniseringen af
sommer og vintertider, så hele EU skifter samtidigt. Det værste var næsten,
at man i Danmark lod lovgivningen være tidsbegrænset, vistnok indtil 2002,
således at vi faktisk ikke i lovgivningen sidste år kunne se, hvornår der
blev skiftet mellem sommer og vintertid i Danmark for året 2003.
Personligt løste jeg dette problem ved at skrive min egen omregningsrutine,
således at jeg simpelthen indlagde en tabel i mit program over
sommer/vintertids skift i Danmark. Dette er en stor opgave, hvis man vil
gør det for alle tidszoner i verden, så du bør specificere nærmere, hvad du
vil bruge det til.
Som sagt har Linux den facilitet, du efterspørger, og da
http://www.cygwin.com/ er en Windows-implementation a mange Linux
faciliteter, kan du evt. undersøge om man heri har en dll til håndtering af
omregningen. Det kræver så selvflg. at dit program får et menupunkt til
indstilling af tidszone, som er mere detaljeret end den, der er i Windows.
Hvis alt dette er for kompliceret, så er der faktisk kun en mulighed: Spørg
Windows om det er sommer- eller vintertid lige nu, og brug dette på
vilkårlige datoer. Sådan gør de fleste andre Windows programmer.
Hilsen,
Lars Dybdahl.
Lars Christensen wrote:
> Hvem kan være behjælpelig med en rutine der ud fra en
> given dato kan fortælle om der er "sommertid eller vintertid" her tænkes
> specielt systemuret.
--
Dybdahl Engineering:
http://dybdahl.dk/
Delphi brugergruppen DAPUG:
http://dapug.dk/