GetDSDT() [UDF]

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

BoBo
Posts: 1618
Joined: 13 May 2014, 17:15

GetDSDT() [UDF]

28 Jul 2017, 03:47

Zu folgender anfrage: https://autohotkey.com/boards/viewtopic.php?f=5&t=28355
... hat 'just me' einen satz funktionen bereitgestellt, welcher eine lokale systemabfrage zur 'sommer/winterzeit' ermöglicht! :thumbup:

Dazu wird aus der registry die lokale zeitzone ermittelt - und darauf basierend, ob ein zeitraum für 'sommer/winterzeit' (DSDT/STDT) definiert ist.
Nun ist es einfach festzustellen, ob die aktuelle systemzeit innerhalb dieses zeitraums liegt. Dazu benutzen wir eine funktion von 'VxE'.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus


8-)
Last edited by BoBo on 28 Jul 2017, 05:50, edited 4 times in total.
BoBo
Posts: 1618
Joined: 13 May 2014, 17:15

Re: GetDSDT() [UDF]

28 Jul 2017, 04:19

Frage an 'just me' ...
Ich habe nicht explizit nach der für die MESZ/CEST resultierenden zeitdifferenz geschaut (UTC+02:00).
Wäre diese jedoch noch in deinem funktionsatz gebunkert, ließe sich damit doch ggf (nach formatierung) der nackte UTC output deiner GetNetworkTime()-UDF bespaßen?!
Return % DateBetween(GetNetworkTime()+zeitdifferenz,DSDT,STDT) = 0 ? "STDT" : "DSDT"
just me
Posts: 4865
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GetDSDT() [UDF]

28 Jul 2017, 05:41

Ich denke mal darüber nach.
Remaining with AHK 1.1.25.02 until v2 will become beta.
just me
Posts: 4865
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GetDSDT() [UDF]

28 Jul 2017, 06:26

Sodele, die Funktion TZI2TIMEZONEINFORMATION()versorgt auch die Zeitdifferenzen (Bias) in der TIME_ZONE_INFORMATION Struktur. Diese Differenzen sind in Minuten abgelegt. Du kannst sie Dir von dort wie folgt holen:

Code: [Select all] [Download] GeSHi © Codebox Plus

; Bias: Abweichung UTC <> lokale Zeit in Minuten
Bias := NumGet(TIMEZONEINFORMATION, 0, "Int")
; StandardBias: zusätzliche Abweichung während der Standardzeit in Minuten - bisher immer 0
StdB := NumGet(TIMEZONEINFORMATION, 84, "Int")
; DaylightBias: zusätzliche Abweichung während der Sommerzeit in Minuten
DltB := NumGet(TIMEZONEINFORMATION, 168, "Int")

Die Umrechnung UTC <> lokale Zeit ist zunächst einmal so definiert:

Code: [Select all] [Download] GeSHi © Codebox Plus

UTC := LokaleZeit + Bias + StandardBias
; bzw.
LokaleZeit := UTC - Bias - StandardBias

Während der Sommerzeit kommt noch ein +/- DaylightBias dazu.
Remaining with AHK 1.1.25.02 until v2 will become beta.
BoBo
Posts: 1618
Joined: 13 May 2014, 17:15

Re: GetDSDT() [UDF]

28 Jul 2017, 06:32

just me wrote:Sodele, die Funktion TZI2TIMEZONEINFORMATION()versorgt auch die Zeitdifferenzen (Bias) in der TIME_ZONE_INFORMATION Struktur. Diese Differenzen sind in Minuten abgelegt. Du kannst sie Dir von dort wie folgt holen:

[...]

Während der Sommerzeit kommt noch ein +/- DaylightBias dazu.

Als hätte ich es geahnt :lol: :thumbup: Wo doch in der US politik aktuell sehr oft der begriff "biased" auftaucht :wtf:
Thx für die recherche zur erweiterten funktionalität! M(u..) a(p..) !! ;)

(Fast) letzte frage, welche aufgabe hat die funktion GetWDayInMonth(), heißt, in welchem kontext wird diese information benötigt ??
Merci fürs schlaumachen :)
just me
Posts: 4865
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GetDSDT() [UDF]

28 Jul 2017, 08:28

Das ist der 'trickreiche' Teil. Die Schaltzeiten für die Sommer- und Winterzeit können entweder auf einem festen Datum liegen (immer am 01.04.) oder variabel sein (letzter Sonntag im März).

Bei festen Daten enthält die Registry die Information Jahr, Monat, Tag, Stunde, Minute, Sekunde. Zur Bestimmung des Datums muss dann nur das Jahr gegen das gewünschte ausgetauscht werden.

Bei variablen Daten ist das Jahr 0 und Tag enthält das Vorkommen des gewünschten Wochentags (WDay, 1 - 5, 5 = letzter), der hier ebenfalls angegeben sein muss (DayOfWeek). Für die Berechnung müssen dann das gewünschte Jahr eingesetzt und der zugehörige Tag ermittelt werden. Das macht GetWDayInMonth().

Das Verfahren hat Microsoft in der Beschreibung zu TIME_ZONE_INFORMATION dokumentiert.
Remaining with AHK 1.1.25.02 until v2 will become beta.

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 3 guests