2010-06-16 23 views

Respuesta

0

Su única opción real en la cabeza es escribir su propia rutina o utilizar la función ctime() definida en POSIX.1/C90. Ctime() vale la pena investigarlo, pero si su fecha ya no está en la zona horaria correcta, se encontrará con problemas.

EDITAR: No pensé en utilizar localtime como lo menciona Jerry a continuación. Convirtiéndolo en una estructura tm le da más posibilidades, incluyendo lo que él menciona, y strptime().

+1

strptime debería ser strftime, ¿no? –

+1

No, se menciona strftime, pero strptime no, se trata de dos funciones separadas (aunque similares). Sin embargo, aunque strftime es parte de C90, strptime no lo es, así que si no existe en las plataformas a las que apunta, ignore esa parte. – jer

54

Usa localtime para convertir time_t en struct tm. Puede usar strftime para imprimir los datos deseados a partir de eso.

char buff[20]; 
time_t now = time(NULL); 
strftime(buff, 20, "%Y-%m-%d %H:%M:%S", localtime(&now)); 
+3

+1 buena respuesta. Pero use localtime_r() en caso de que su código se use alguna vez en un entorno reentrante. –

+1

@Amardeep: Preguntó específicamente por la portabilidad, y 'localtime_r' puede no calificar en ese sentido (depende de qué objetivos le interesen). –

+2

localtime_r ha sido parte de POSIX durante 18 años en este momento. Creo que es seguro suponer que estará disponible. –

Cuestiones relacionadas