04. juli 2004 - 15:46Der er
7 kommentarer og 1 løsning
Er PC'en indstillet til Sommertid
Jeg har brug for at kende aktuel vintertid. En mulighed er at trække en time fra aktuel PC'tid, hvis pc'en står til sommertid, men men hvordan tester jeg på om pc'en står til sommer ( eller vintertid ) ?
I registreringsdatabasen står alle tidszoner angivet, for central-europa i nedenstående nøgle. Der må være mulighed for at udlæse om der er sat automatisk skift til sommertid - eller ikke. Ikke noget jeg er stiv i, men der er ofte på 'Eksperten' svaret på hvorledes man får fat i værdier fra Registry.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Central Europe Standard Time
Så må du teste på datoerne nær 28. marts og 28. oktober for at finde nærmeste søndag, og derpå om klokken er 2 om natten. Først da kan du vide om klokken er det ene eller det andet.
Er det virkelig så nødvendigt for dit program? Det hedder i øvrigt 'normaltid'.
At jeg svare lidt sent skylles ar jeg havde håbet på flere besvarelser, men her lidt kommentar til Joern. Normaltid ja enig det er betegnelsen for hvad jeg ønsker at kende. Årsagen hertil er at mit program behandler indsamlede data der stammer fra Vindmøller, Vindmøller som året rundt køre efter vintertid. Jeg syntes imidlertid IKKE at dit løsningsforslag er en nem løsning, man skulle tro at det var muligt direkte at se f.eks. i regedit om pc'en aktuelt "kørte" på sommertid eller ej, eller på anden vis få direkte adgang til normaltiden. Er der andre forslag ( ellers får Joern point for bedste/eneste besvarelse )
Tak for uddybningen. Når man i 'international' vælger om der skal ske automatisk indstilling af sommertid, må den information jo opbevares et sted i Registry, jeg er bare novice til at anvende Registry. De programmer jeg selv udvikler bruger gammeldags ini-filer, dér føler jeg mig på sikker grund. Men det ville være nærliggende at værdien 'sommertid automatisk' blev opbevaret i nøglen ....\time zones\... ved skiftevis at indstille og afstille den kan man vel se hvor :-) Jeg tror ikke man kan se nogle steder om datoen befinder sig indenfor den periode, hvor sommertiden har gyldighed. Det er maskinens ur i BIOS, der indstilles når der skiftes. Andre ure er der ikke, som går når maskinen er slukket.
Måske har nogen skrevet en lille rutine, der kan give dig oplysningen, men det tager måske lige så lang tid at finde sådan en, som at skrive noget selv.
Ang. flere svar, så får 'abonnenter' på VB-konferencen her jo kun én mail første gang, med mindre de selv giver et indlæg. Spørgsmål som jeg ikke kan svare på sletter jeg jo straks, og så hører jeg ikke mere til dem. Så du skal nok ikke regne med yderligere.
Men i øvrigt, skal det være så nøjagtigt? For mig virker det som 'overkill'
Jeg har fundet nøglen i regdatabasen som ændre sig der skiftes imellem sommertid & Vintertid. herefter var resten nemt, her min funktion som altid retunerer normaltid
Public Function nnow() Dim wsh Set wsh = CreateObject("WScript.Shell") If wsh.regread("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\- TimeZoneInformation\DaylightBias") = 0 Then nnow = Format(now, "dd-mm-yyyy Hh:Nn:Ss") ' Vinter Else nnow = Format(DateAdd("h", -1, now), "dd-mm-yyyy Hh:Nn:Ss") ' Sommer End If Set wsh = Nothing End Function
Tak for funktionen og for at du vil pointsætte min inspiration. Du fandt jo selv løsningen for alvor. Jeg vil naturligvis gemme din funktion, det kunne jo være at jeg engang ville det samme.
M.v.h. Jørn
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.