Convertir une estampille en struct tm et réciproquement

Problème

Vous disposez d’une date sous forme d’estampille et voulez la convertir en struct tm ou l’inverse.

Solution

Pour transformer une estampille en struct tm, recourez à localtime() ou gmtime(). Pour transformer un struct tm en estampille, utilisez mktime().

Discussion

Une estampille est une valeur simple : le nombre de secondes écoulées depuis le 1er janvier 1970 00h00’00 en temps universel coordonné (UTC). Par contre, les données stockées dans un struct tm sont complexes. Elles décomposent une date en ses différents éléments, jours, mois, année, heure, minutes, secondes, jours de la semaine, jours de l’année et décalage horaire, sans tenir compte du fuseau horaire. Par conséquent, la conversion vers une estampille est simple car il n’y a qu’un résultat possible pour une date, et de plus, mktime() corrige les dates dont les champs de la structure struct tm seraient mal renseignés (cela peut être volontaire). Par contre, la conversion vers un struct tm dépend du fuseau horaire. En conséquence, si vous voulez obtenir un struct tm en temps universel coordonné (UTC), utilisez gmtime(). Si vous voulez le même résultat, mais en tenant compte de votre fuseau horaire, utilisez localtime().

Si votre programme utilise les threads, n’utilisez ni localtime() ni gmtime(), mais leur version dite réentrante...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Effectuer des calculs sur les dates
Suivant
Convertir une estampille ou un struct tm en chaîne de caractères