Convertir une estampille ou un struct tm en chaîne de caractères

Problème

Vous disposez d’une date sous forme d’estampille ou de struct tm et vous voulez la transformer en chaîne de caractères.

Solution

Utilisez asctime(), ctime() ou strftime().

Discussion

Les fonctions asctime() et ctime() renvoient la date sous forme de chaîne de caractères de la forme : "Sat May 1 15:00:00 2004\n". Si vous programmez avec des threads, utilisez les versions dites réentrantes de ces fonctions : asctime_r() et ctime_r(). La fonction asctime() renvoie une chaîne de caractères correspondant à la date passée en paramètre, alors que ctime(), équivalente à asctime(localtime()), tient compte du fuseau horaire.

Pour afficher une date avec un format que vous maîtrisez, vous utilisez strftime() dont la syntaxe est proche de snprintf(). Pour le formatage des dates, notez l’existence de la norme ISO 8601 : les dates doivent être écrites sous forme AAAA-MM-JJ et les heures sous la forme HH:MM:SS. Pour cela, vous pouvez utiliser le format "%FT%T". D’autres formats sont aussi possibles comme celui utilisé par asctime() et par ctime() : les deux exemples ci-dessous sont équivalents (sauf pour la valeur renvoyée).


char d[] = "ddd mmm dd hh:mm:ss yyyy\n "; 
strftime (d, strlen (d), "%c", &tm); 
asctime_r (&tm, d);
 

La norme ISO 8601 peut être consultée...

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
Convertir une estampille en struct tm et réciproquement
Suivant
Convertir une chaîne de caractères en estampille ou en struct tm