minutes - unix time actual
Convertir cadena de tiempo de epoxi a tiempo (2)
He estado buscando una forma de convertir una cadena (en tiempo de Época) en una fecha.
Básicamente, necesito tomar esto: 1360440555
(en forma de cadena) y hacerlo en esto: Feb 9 12:09 2013
.
He estado mirando strptime y strftime, pero ninguno parece estar funcionando para mí. ¿Alguna sugerencia?
Editar: Gracias, chicos. Lo convertí en un int con atoi()
, lo atoi()
como time_t
y luego ejecuté ctime()
en él. Funcionó a la perfección!
Puede usar %s
(extensión GNU) para convertir la marca de tiempo POSIX dada como una cadena al tiempo desglosado tm
:
#define _XOPEN_SOURCE
#include <stdio.h>
#include <string.h>
#include <time.h>
int main() {
struct tm tm;
char buf[255];
memset(&tm, 0, sizeof(struct tm));
strptime("1360440555", "%s", &tm);
strftime(buf, sizeof(buf), "%b %d %H:%M %Y", &tm);
puts(buf); /* -> Feb 09 20:09 2013 */
return 0;
}
Nota: la zona horaria local es UTC (con otra zona horaria el resultado es diferente).
Si solo tuvieras ese valor en un entero en vez de una cadena, podrías simplemente llamar a ctime
. Si hubiera alguna forma de convertir una cadena en un entero ...
time_t c;
c = strtoul( "1360440555", NULL, 0 );
ctime( &c );