FB_FileTimeToTzSpecificLocalTime

FB_FileTimeToTzSpecificLocalTime 1:
FB_FileTimeToTzSpecificLocalTime 2:

Veraltete Funktion

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

Der Funktionsbaustein konvertiert die UTC-Zeit (file time format) in Lokalzeit (file time format) unter der Berücksichtigung der angegebenen Zeitzoneninformation. Der Funktionsbaustein: FB_SystemTimeToTzSpecificLocalTime 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 UTC-Zeitstempelinformation. Anhand der Zeitzoneninformation errechnet der Funktionsbaustein die erforderlichen Zeitsprünge in der Lokalzeit (Sommer-/Winterzeit Umstellung). Zeitsprünge in der UTC-Eingangszeit sind nicht zulässig und führen zur fehlerhaften Konvertierung. Der Grund: Die zuletzt konvertierte Zeit wird im Baustein intern gespeichert, um aus dem Verlauf der UTC-Eingangszeit und dem gespeicherten Wert 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.

1. Grafische Darstellung des zeitlichen Verhaltens beim Übergang von Sommerzeit zur Winterzeit (hier tzInfo = WEST_EUROPE_TZI):

FB_FileTimeToTzSpecificLocalTime 3:

Die UTC-Eingangszeit (grün) verläuft kontinuierlich. Die Lokalzeit (rot) macht einen Sprung zurück. 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, nachdem 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_FileTimeToTzSpecificLocalTime 4:

Die UTC-Eingangszeit (grün) verläuft kontinuierlich. Die Lokalzeit (grün) macht einen Sprung nach vorne. 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: UTC-Zeit (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 Lokalzeit (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 UTC-Zeit: DT#2011-09-02-09:01:31 wird in Lokalzeit konvertiert. Das Ergebnis ist: DT#2011-09-02-11:01:31.

PROGRAM MAIN
VAR
    in        : DT := DT#2011-09-02-09:01:31;(* UTC time *)
    out       : DT;(* Local time *)
    fbToLocal : FB_FileTimeToTzSpecificLocalTime;
END_VAR
fbToLocal( in := DT_TO_FILETIME( in ), tzInfo := WEST_EUROPE_TZI );
out := FILETIME_TO_DT( fbToLocal.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)