Comment imprimer à l'heure au format: 2009-08-10 18:17:54.811
Quelle est la meilleure méthode pour imprimer de temps en C dans le format 2009‐08‐10
18:17:54.811
?
Vous devez vous connecter pour publier un commentaire.
Quelle est la meilleure méthode pour imprimer de temps en C dans le format 2009‐08‐10
18:17:54.811
?
Vous devez vous connecter pour publier un commentaire.
Utilisation strftime().
Pour millisecondes part, jetez un oeil à cette question. Comment mesurer le temps en millisecondes à l'aide de la norme ANSI C?
time(&timer)
devrait plutôt êtretimer = time(NULL);
, au moins pour Linux.The tloc argument is obsolescent and should always be NULL in new code. When tloc is NULL, the call cannot fail.
"%F %T"
.Les réponses ci-dessus ne répondent pas complètement à la question (en particulier le millisec partie). Ma solution pour cela est d'utiliser gettimeofday avant strftime. Notez le soin pour éviter les arrondis millisec à "1000". Ceci est basé sur Hamid Nazari de réponse.
gettimeofday
n'est pas disponible sur Windows implémentationstime.h
définit unstrftime
fonction qui peut vous donner une représentation textuelle d'untime_t
en utilisant quelque chose comme:mais qui ne vous donnent pas de sous-deuxième résolution puisque ce n'est pas disponible à partir d'un
time_t
. C'sorties:Si vous êtes vraiment limité par les spécifications et ne veulent pas l'espace entre le jour et l'heure, il suffit de retirer de la chaîne de format.
Code suivant imprime avec une précision. Tout ce que nous avons à faire est d'utiliser
gettimeofday
etstrftime
surtv_sec
et ajoutertv_usec
à la construction de la chaîne.Vous pouvez utiliser
strftime
, maisstruct tm
ne possède pas de résolution pour les pièces de secondes. Je ne suis pas sûr si c'est absolument nécessaire pour vos besoins.