/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Sommertid / Vintertid
Fra : Lars Christensen


Dato : 12-12-02 00:39

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.

På forhånd tak.

Lars Christensen



 
 
Lars B. Dybdahl (12-12-2002)
Kommentar
Fra : Lars B. Dybdahl


Dato : 12-12-02 02:52

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/


Stig Johansen (13-12-2002)
Kommentar
Fra : Stig Johansen


Dato : 13-12-02 02:27

Hej.

"Lars Christensen" <lc@post5.tele.dk> wrote in message
news:3df7cca5$0$147$edfadb0f@dread12.news.tele.dk...
> 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.

Tag et kig på GetTimeZoneInformation og typen TTimeZoneInformation

--

Med venlig hilsen/Best regards
Stig Johansen
Stig.Johansen@udvikling.it.dk
(remove dot dk)




Søg
Reklame
Statistik
Spørgsmål : 177461
Tips : 31964
Nyheder : 719565
Indlæg : 6408203
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste