FB_TzSpecificLocalTimeToFileTime

FB_TzSpecificLocalTimeToFileTime 1:
FB_TzSpecificLocalTimeToFileTime 2:

Veraltete Funktion

Dieser Funktionsbaustein ist veraltet. Verwenden Sie stattdessen den Funktionsbaustein FB_TzSpecificLocalTimeToFileTime64.

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):

FB_TzSpecificLocalTimeToFileTime 3:

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):

FB_TzSpecificLocalTimeToFileTime 4:

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 (Typ: T_FILETIME).

tzInfo: Strukturvariable mit der aktuellen Zeitzone-Information des Betriebssystems (Typ: ST_TimeZoneInformation).

VAR_OUTPUT

VAR_OUTPUT
    out   : T_FILETIME;
    eTzID : E_TimeZoneID := eTimeZoneID_Unknown;
    bB    : BOOL;
END_VAR

out: Konvertierte UTC-Zeit (file time format) (Typ: T_FILETIME).

eTzID: Zusätzliche Sommer-/ Winterzeit-Information (Typ: E_TimeZoneID).

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:

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)