2012-09-05 16 views
6

Estoy tratando de formatear una marca de tiempo de Unix de 10 dígitos (actualmente una cadena) usando ctime.Formateo de la marca de tiempo de Unix con ctime en c

Sin embargo, ctime() espera un parámetro de tipo time_t, no una cadena.

¿Qué debo hacer antes de poder usar ctime? En otras palabras, ¿puedo convertir fácilmente la cadena en time_t?

+0

Utilice 'strtoull' (compruebe si hay desbordamientos). –

+0

@ eq-: La hora es una cantidad firmada, no sin firmar. Los tiempos negativos son anteriores a 1970-01-01 00: 00: 00Z (y sí, eso deja una ambigüedad entre los errores y un segundo antes de The Epoch). –

+0

@JonathanLeffler, era muy consciente de eso. Sin embargo, hablar de marca de tiempo de "10 dígitos" (o al menos se puede interpretar que lo hace) restringe el rango a marcas de tiempo no negativas. –

Respuesta

9

¿Estás diciendo que tienes algo así como 1346426869 como una cadena y quieres que sea un time_t?

time_t raw_time = atoi("1346426869"); 
printf("current time is %s",ctime(&raw_time)); 

> current time is Fri Aug 31 11:27:49 2012 
Cuestiones relacionadas