109 votes

C - Comment imprimer l'heure au format: 2009‐08‐10 18: 17: 54.811

Quelle est la meilleure méthode pour imprimer le temps en C au format 2009‐08‐10
18:17:54.811 ?

Atm, j'ai Thu Sep 9 11:10:08 2010 mais je ne peux pas comprendre ce qui précède.

113voto

Hamid Nazari Points 2183

Utilisez strftime () .

 #include <stdio.h>
#include <time.h>

int main()
{
    time_t timer;
    char buffer[25];
    struct tm* tm_info;

    time(&timer);
    tm_info = localtime(&timer);

    strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info);
    puts(buffer);

    return 0;
}
 

Pour la partie millisecondes, jetez un oeil à cette question. Comment mesurer le temps en millisecondes en utilisant ANSI C?

13voto

paxdiablo Points 341644

time.h définit une fonction strftime qui peut vous donner une représentation textuelle d'un time_t utilisant quelque chose comme:

 #include <stdio.h>
#include <time.h>
int main (void) {
    char buff[100];
    time_t now = time (0);
    strftime (buff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&now));
    printf ("%s\n", buff);
    return 0;
}
 

mais cela ne vous donnera pas une résolution inférieure à la seconde car elle n'est pas disponible à partir d'un time_t . Il génère:

 2010-09-09 10:08:34.000
 

Si vous êtes vraiment limité par les spécifications et que vous ne voulez pas d'espace entre le jour et l'heure, supprimez-le simplement de la chaîne de format.

2voto

Jack Kelly Points 9640

Vous pouvez utiliser strftime , mais struct tm n'a pas de résolution pour des parties de secondes. Je ne sais pas si c'est absolument nécessaire pour vos besoins.

 struct tm tm;
/* Set tm to the correct time */
char s[20]; /* strlen("2009-08-10 18:17:54") + 1 */
strftime(s, 20, "%F %H:%M:%S", &tm);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X