Passa al contenuto principale

SysDateLocalize, localize date and time

Questa funzione permette di calcolare il valore di Data/Ora locale partendo dal valore UTC utilizzando il valore di TimeZone e DaylightZone definiti.

Approfondimenti
  • In questo topic un esempio di temporizzaztore giornaliero.

Descrizione​

Immagine F_SysDateLocalize

ParametroTipoDescrizione
UTCDateTimeUDINTValore data in UTC espressa in secondi.
TimeZoneSINTFuso orario numero che indica la differenza in ore dell'ora locale rispetto al Tempo Coordinato Universale (UTC) riferito al meridiano di Greenwich. Per l'Italia il valore da definire è +1.
DaylightZoneDAYLIGHT_ZONEZona di cambio ora legale, il sistema provvede automaticamente al cambio di ora in base alla zona definita.
OutLa funzione ritorna un ___UDINT___con il valore di data locale espressa in secondi.

Esempi​

Come utilizzare gli esempi.
Ad ogni secondo viene calcolato il valore di Data/Ora locale per l'Italia, valore calcolato in formato DATE_AND_TIME con risoluzione al secondo. Nell'esempio il valore è anche calcolato in LDATE_AND_TIME mantenendo la risoluzione al secondo, questo permette di passarlo come parametro alla funzione DateTimeFormat per la conversione in stringa.

LogicLab (Ptp116, ST_SysDateLocalize)
PROGRAM ST_SysDateLocalize
VAR
Pulse : BOOL; (* One-Shot flag *)
DTimeUTC : DATE_AND_TIME; (* UTC Date/Time (S) *)
DTimeLocal : DATE_AND_TIME; (* Local Date/Time (S) *)
LDTimeLocal : LDATE_AND_TIME; (* Local Date/Time (ns) *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysDateLocalize"
// *****************************************************************************
// At every second it's returned the Date/Time for Italy.
// -----------------------------------------------------------------------------

IF (SysClock1000 = Pulse) THEN RETURN; END_IF;
Pulse:=SysClock1000; //One-Shot flag

DTimeUTC:=TO_DATE_AND_TIME(SysDateGetS()); //UTC Date/Time
DTimeLocal:=TO_DATE_AND_TIME(SysDateLocalize(SysDateGetS(), +1, DAYLIGHT_ZONE#DLZ_EUROPE)); //Local Date/Time (S)

// Localized date/time in nanoseconds (1-second resolution).

LDTimeLocal:=TO_LDATE_AND_TIME(TO_ULINT(DTimeLocal)*ULINT#1000000000); // Local Date/Time (ns)

// [End of file]