Qu'est-ce que l'heure Unix ?
Le temps Unix est simplement une valeur numérique représentant le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC . Cette date est appelée époque Unix .
L'époque Unix ne doit pas être confondue avec l'époque du compteur électronique (eGauge), configurée dans Paramètres → Date et heure de début d'enregistrement . L'époque du compteur correspond à la date et l'heure de mise en service du compteur et de début d'enregistrement de données précises.
Qu'est-ce que l'UTC ?
Le Temps Universel Coordonné (UTC) est une norme permettant de coordonner et d'identifier les différences de fuseaux horaires. Les heures exprimées en UTC sont écrites dans un format indiquant le décalage entre l'heure locale et l'heure UTC.
Par exemple, l'heure normale de l'Est des États-Unis (EST) est en retard de 5 heures sur UTC (-5), et un horodatage relatif à l'heure normale de l'Est peut s'écrire 2023-12-22 15:30:00-05:00 . Cela lève toute ambiguïté quant au fuseau horaire concerné, ainsi que quant à savoir s'il s'agit de l'heure normale ou de l'heure d'été.
De même, l'heure normale du Japon a 9 heures d'avance sur UTC+9, et le même instant dans l'exemple précédent ( 2023-12-22 15:30:00-05:00 ) correspond à 2023-12-22 05:30:00+9 . En UTC, cela donnerait 2023-12-22 20:30:00-00:00 . L'horodatage Unix équivalent est 1703277000 .
Qu'en est-il des informations sur le fuseau horaire ?
Les horodatages Unix étant exprimés en UTC, il n'existe pas de notion de fuseau horaire pour un horodatage Unix. Lors du traitement d'un horodatage Unix, on détermine d'abord l'heure lisible par l'utilisateur (en UTC), puis on applique le décalage horaire souhaité.
Par exemple, un timestamp Unix de 1703277000 correspond au Friday, December 22, 2023 8:30:00 PM UTC . Pour le convertir en heure normale de l'Est des États-Unis (UTC+5), on soustrait 5 heures, ce qui donne Friday, December 22, 2023 3:30:00 PM UTC
La plupart des bibliothèques de programmation courantes proposent des méthodes pour convertir les horodatages Unix en horodatages lisibles par l'utilisateur, incluant les informations de fuseau horaire. Par exemple, Python 3 peut utiliser les fonctions `datetime` et `pytz` pour convertir facilement un horodatage Unix en une heure locale et lisible par l'utilisateur.
Par exemple, ici nous utilisons Python 3 pour convertir l'horodatage de notre exemple précédent en heure de l'Est des États-Unis (pytz choisira automatiquement l'heure standard ou l'heure d'été) :
from datetime import datetime
import pytz
tz = pytz.timezone('US/Eastern')
ts = int('1703277000')
print(datetime.fromtimestamp(ts,tz).strftime('%Y-%m-%d %H:%M:%S'))
2023-12-22 15:30:00Où sont utilisés les horodatages Unix ?
Lors de l'interaction et de l'obtention de données à partir d'une API eGauge, d'un service BACnet ou Modbus, les horodatages et les plages horaires sont le plus souvent signalés et demandés sous forme d'horodatages Unix.
Par exemple, le JSON suivant a été obtenu via l'API Web. Il contient deux horodatages Unix : le premier dans le corps principal ("ts": "1703275428") indique l'heure actuelle du compteur au cours de laquelle la réponse a été générée, et le second dans la section des plages ("ts": "1703030400") .
Le premier horodatage correspond au Friday, December 22, 2023 8:03:48 PM, UTC . Il s'agit de l'heure à laquelle la réponse a été envoyée. Le second horodatage correspond au Wednesday, December 20, 2023 12:00:00 AM, UTC , soit l'horodatage des valeurs de la première ligne.
{
"ts": "1703275428",
"registers": [
{
"name": "S15 A",
"type": "I",
"idx": 4,
"did": 0
}
],
"ranges": [
{
"ts": "1703030400",
"rows": [
[
"2078357324"
]
],
"delta": 0
}
]
}