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
| Parametro | Tipo | Descrizione |
|---|---|---|
| UTCDateTime | UDINT | Valore data in UTC espressa in secondi. |
| TimeZone | SINT | Fuso 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. |
| DaylightZone | DAYLIGHT_ZONE | Zona di cambio ora legale, il sistema provvede automaticamente al cambio di ora in base alla zona definita. |
| Out | La 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]