Sincronizzazione Data/Ora tra sistemi

La sincronizzazione della Data/Ora tra sistemi diversi è un’operazione fondamentale, l’obiettivo è garantire che tutti i dispositivi coinvolti in una applicazione abbiano la stessa ora esatta, in modo da poter coordinare le attività e analizzare i dati in modo coerente.
In quasi tutti i sistemi esiste la possibilità di utilizzare il NTP (Network Time Protocol) vedi articolo, un protocollo ampiamente utilizzato per sincronizzare gli orologi dei computer su reti IP. Utilizza una gerarchia di server temporali sincronizzati con fonti di tempo atomico. Per l’ambiente di sviluppo LogicLab forniamo il FB SNTPClient che permette di acquisire il valore di UTC in Epoch time da un server NTP. Come abbiamo visto il valore di orario ritornato dal server NTP è riferito a UTC, per convertirlo nel’orario della nostra posizione geografica si può utilizzare la funzione SysDateLocalize che tiene conto del fuso orario e della eventuale ora legale. Abilitando NTP garantiamo tutti i sistemi siano sincronizzati allo stesso orario.
Per utilizzare NTP occorre disporre di una connessione ad Internet oppure disporre di un server NTP nella propria rete. Per l’ambiente di sviluppo LogicLab forniamo il FB SNTPServer che fornisce come riferimento di tempo il valore del real time clock del sistema.
Ora solare ora legale
Un’altro problema da tenere in considerazione nella gestione dell’orario è proprio il passaggio tra l’ora solare e quella legale e viceversa. Se il sistema esegue dei log temporali se ci affidiamo all’ora localizzata, avremo che nel passaggio dall’ora solare a quella legale mancheranno tutti i log dalle 2 alle 3 e viceversa nel passaggio inverso avremo i log dalle 2 alle 3 ripetuti due volte. Ecco perchè in questo caso conviene riferirci sempre all’ora UTC anche se rende la lettura del log meno immediata.