FB_TzSpecificLocalTimeToFileTime
Der Funktionsbaustein konvertiert die Lokalzeit (file time format) in UTC-Zeit (file time format) unter der Berücksichtigung der angegebenen Zeitzoneninformation. Der Funktionsbaustein: FB_TzSpecificLocalTimeToSystemTime besitzt eine ähnliche Funktionalität, mit dem Unterschied dass er ein anderes Zeitformat (structured system time format) umrechnet.
Der Baustein eignet sich nur zur Konvertierung von kontinuierlichen Lokalzeit-Zeitstempelinformation. Die Lokalzeitsprünge durch die Sommer-/Winterzeit Umstellung sind zulässig und werden vom Baustein erkannt. Lokalzeiten, die sich beliebig ändern führen zur fehlerhaften Konvertierung. Der Grund: Die zuletzt konvertierte Zeit wird im Baustein intern gespeichert um die Sommerzeit-/Winterzeit-Information und die B-Zeiten (siehe unten) beim Zurückstellen der Lokalzeit erkennen zu können. Der Baustein besitzt eine Aktion: A_Reset(). Ein Aufruf dieser Aktion setzt die Ausgänge des Bausteins und die intern gespeicherte (zuletzt konvertierte Zeit) auf Null zurück.
Die Sprünge in der Lokalzeit stellen hier ein Problem dar da sie in eine lineare UTC-Zeit konvertiert werden müssen. Es empfiehlt sich daher für Zeitstempelungsaufgaben die (kontinuierliche) UTC-Zeit zu verwenden und diese erst zur optischen Anzeige der Werte (z.B. in einer Visualisierung) in die jeweilige Lokalzeit zu konvertieren.
1. Grafische Darstellung des zeitlichen Verhaltens beim Übergang von Sommerzeit zur Winterzeit ( hier tzInfo = WEST_EUROPE_TZI ):
Die Lokalzeit (grün) macht einen Sprung zurück. Die UTC-Ausgangszeit (rot) verläuft kontinuierlich weiter. Der Lokalzeit: 02h:59m:59s:999ms.. folgt unmittelbar die Zeit: 02h:00m:00s:000ms.. Die Zeiten zwischen 2h und 3h sind zweifach vorhanden. Die doppelte Zeit vor der Zeitumstellung wird z.B. als 02:05:00 MESZ A bezeichnet und die Zeit nach der Umstellung als 02:05:00 MEZ B. Die Ausgangsvariable bB gibt Information darüber ob es sich um den ersten oder zweiten Durchgang handelt. Beim zweiten Durchgang ist die bB-Ausgangsvariable (blau) auf TRUE gesetzt. Die bB-Ausgangsvariable wird automatisch zurückgesetzt nach dem die doppelte Zeit überschritten wurde. Die Zeitzonen-ID (orange) wechselt von eTimeZoneID_Daylight (Sommerzeit) zu eTimeZoneID_Standard (Winterzeit).
2. Grafische Darstellung des zeitlichen Verhaltens beim Übergang von Winterzeit zur Sommerzeit ( hier tzInfo = WEST_EUROPE_TZI ):
Die Lokalzeit (grün) macht einen Sprung nach Vorne. Die UTC-Ausgangszeit (rot) verläuft kontinuierlich weiter. Der Lokalzeit: 2h:59m:59s:999ms.. folgt unmittelbar die Zeit: 3h:00m:00s:000ms.. Die Zeitzonen-ID (orange) wechselt von eTimeZoneID_Standard (Winterzeit) zu eTimeZoneID_Daylight (Sommerzeit).
VAR_INPUT
VAR_INPUT
in : T_FILETIME;
tzInfo : ST_TimeZoneInformation;
END_VAR
in: Lokalzeit (file time format) die konvertiert werden soll.
tzInfo: Strukturvariable mit der aktuellen Zeitzone-Information des Betriebssystems.
VAR_OUTPUT
VAR_OUTPUT
out : T_FILETIME;
eTzID : E_TimeZoneID := eTimeZoneID_Unknown;
bB : BOOL;
ND_VAR
out: Konvertierte UTC-Zeit (file time format).
eTzID: Zusätzliche Sommer-/ Winterzeit-Information.
bB: TRUE => B-Zeit (Z.B.:02:05:00 MEZ B), FALSE => Übrige Zeit (Z.B.: 02:05:00 MESZ A). Bei einem Sprung der Lokalzeit zurück wird dieser Ausgang gesetzt und beim Überschreiten der doppelten Lokalzeit wieder zurückgesetzt.
Beispiel:
Die Lokalzeit: DT#2011-09-02-11:01:31 wird in UTC-Zeit: DT#2011-09-02-09:01:31 konvertiert.
PROGRAM MAIN
VAR
in : DT := DT#2011-09-02-11:01:31;(* Local time *)
out : DT;(* UTC time *)
fbToUTC : FB_TzSpecificLocalTimeToFileTime;
END_VAR
fbToUTC( in := DT_TO_FILETIME( in ), tzInfo := WEST_EUROPE_TZI );
out := FILETIME_TO_DT( fbToUTC.out );
Weitere Zeit-, Zeitzone-Funktionen und -Funktionsbausteine:
FB_TzSpecificLocalTimeToSystemTime, FB_TzSpecificLocalTimeToFileTime, FB_SystemTimeToTzSpecificLocalTime, FB_FileTimeTimeToTzSpecificLocalTime, FB_GetTimeZoneInformation, FB_SetTimeZoneInformation, NT_SetLocalTime, NT_GetTime, NT_SetTimeToRTCTime, F_TranslateFileTimeBias, FB_LocalSystemTime
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v2.11.0 Build > 2036 | PC or CX (x86, ARM) | TcUtilities.Lib |