Vai al contenuto

SysDateLocalize, localize date and time

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabXUnified12Lib
Libreria Codesys: Non disponibile

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

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 (USINT) Zona di cambio ora legale, il sistema provvede automaticamente al cambio di ora in base alla zona definita. Le zone sono 3 (Per l’Italia occorre impostare 1).
0) Nessun cambiamento di ora legale.
1) Europa, ora legale da Aprile ad Ottobre.
2) USA, ora legale da Aprile a Novembre.

La funzione ritorna un UDINTcon il valore di data locale espressa in secondi.

Immagine F_SysDateLocalize

Esempi

Come utilizzare gli esempi.
Ad ogni secondo viene calcolato il valore di Data/Ora locale per l’Italia.

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

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

    // Time trigger.

    IF (SysClock1000 <> Pulse) THEN
        Pulse:=SysClock1000; //One-Shot flag
        DTimeUTC:=TO_DATE_AND_TIME(SysDateGetS()); //UTC Date/Time
        DTimeLocal:=TO_DATE_AND_TIME(SysDateLocalize(SysDateGetS(), +1, 1)); //Local Date/Time
    END_IF;

// [End of file]
Was this article helpful?