FB_FileTimeToTzSpecificLocalTime 1:
FB_FileTimeToTzSpecificLocalTime 2:

Outdated function

This function block is outdated. Use the function block FB_FileTime64ToTzSpecificLocalTime instead.

The function block converts the UTC time (file time format) to local time (file time format), taking into account the specified time zone information. The function block: FB_SystemTimeToTzSpecificLocalTime has a similar function, the difference being that it converts to a different time format (structured system time format).

The function block is only suitable for conversion of continuous UTC timestamp information. The function block uses the time zone information to calculate the required time steps (summer/winter time changeover) in local time. Time steps in UTC input time are not permitted and lead to incorrect conversion. The reason: the function block stores the last converted time internally, so that it can detect the B times (see below) from the UTC input time and the stored value when the local time is changed.

The function block is associated with an action: A_Reset(). If this action is called the function block outputs and the locally stored (last converted) time are reset to zero.

1. Graphic representation of the changeover from summer time to winter time (tzInfo = WEST_EUROPE_TZI):

FB_FileTimeToTzSpecificLocalTime 3:

The UTC input time (green) is continuous. The local time (red) jumps back. The local time: 02h:59m:59s:999ms.. is directly followed by: 02h:00m:00s:000ms.. The times between 2h and 3h occur twice. The duplicate time before the changeover is referred to as 02:05:00 CEST A, for example, the time after the changeover as 02:05:00 CET B. The output variable bB indicates whether it is the first or the second pass. During the second pass the bB output variable (blue) is set to TRUE. The bB output variable is automatically reset once the duplicate time has passed. The time zone ID (orange) changes from eTimeZoneID_Daylight (summer time) to eTimeZoneID_Standard (winter time).

2. Graphic representation of the change-over from winter time to summer time (tzInfo = WEST_EUROPE_TZI):

FB_FileTimeToTzSpecificLocalTime 4:

The UTC input time (green) is continuous. The local time (green) jumps forward. The local time: 2h:59m:59s:999ms.. is directly followed by: 3h:00m:00s:000ms.. The time zone ID (orange) changes from eTimeZoneID_Standard (winter time) to eTimeZoneID_Daylight (summer time).


    in     : T_FILETIME;
    tzInfo : ST_TimeZoneInformation;

in: UTC time (file time format) to be converted (type: T_FILETIME).

tzInfo: Structure variable with the current time zone information of the operating system (type: ST_TimeZoneInformation).


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

out: Converted local time (file time format, type: T_FILETIME).

eTzID: Additional summer/winter time information (Type: E_TimeZoneID).

bB: TRUE => B time (e.g.:02:05:00 CET B), FALSE => other time (e.g.: 02:05:00 CEST A). This output is set if the local time jumps back and is reset once the duplicate local time has passed.


The UTC time: DT#2011-09-02-09:01:31 is converted to local time. The result is: DT#2011-09-02-11:01:31.

    in        : DT := DT#2011-09-02-09:01:31;(* UTC time *)
    out       : DT;(* Local time *)
    fbToLocal : FB_FileTimeToTzSpecificLocalTime;
fbToLocal( in := DT_TO_FILETIME( in ), tzInfo := WEST_EUROPE_TZI );
out := FILETIME_TO_DT( fbToLocal.out );

Further functions and function blocks for time and time zone:


Development environment

Target platform

PLC libraries to be integrated (category group)

TwinCAT v3.1.0

PC or CX (x86, x64, ARM)

Tc2_Utilities (System)