¿Cuál es el mejor método para imprimir la hora en C en el formato 2009‐08‐10
18:17:54.811?
96
Utilice strftime () .
#include <stdio.h>
#include <time.h>
int main()
{
time_t timer;
char buffer[26];
struct tm* tm_info;
timer = time(NULL);
tm_info = localtime(&timer);
strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
puts(buffer);
return 0;
}
Por milisegundos, eche un vistazo a esta pregunta. ¿Cómo medir el tiempo en milisegundos usando ANSI C?
time(&timer)debería ser mejortimer = time(NULL);, al menos para Linux.The tloc argument is obsolescent and should always be NULL in new code. When tloc is NULL, the call cannot fail.Las respuestas anteriores no responden completamente a la pregunta (específicamente la parte milisegunda). Mi solución a esto es usar gettimeofday antes de strftime. Tenga cuidado de no redondear milisegundos a "1000". Esto se basa en la respuesta de Hamid Nazari.
fuente
gettimeofdayno está disponible en implementaciones de Windowstime.hdefine unastrftimefunción que puede darte una representación textual de untime_tusando algo como:pero eso no le dará una resolución inferior a un segundo, ya que no está disponible en a
time_t. Produce:Si está realmente limitado por las especificaciones y no desea el espacio entre el día y la hora, simplemente elimínelo de la cadena de formato.
fuente
El siguiente código se imprime con precisión de microsegundos. Todo lo que tenemos que hacer es uso
gettimeofdayystrftimeentv_secy añadirtv_useca la cadena construida.fuente
Podría usar
strftime, perostruct tmno tiene resolución por partes de segundos. No estoy seguro de si eso es absolutamente necesario para sus propósitos.fuente
truco:
fuente
Ninguna de las soluciones en esta página funcionó para mí, las mezclé y las hice funcionar con Windows y Visual Studio 2019, aquí se explica cómo:
Resultado:
fuente