我一直在寻找一种方法将字符串(在Epoch时间内)转换为日期。
基本上,我需要这样做:1360440555
(以字符串形式)并将其改为:Feb 9 12:09 2013
。
我一直在关注strptime和strftime,但似乎都不适合我。有什么建议吗?
编辑:谢谢,伙计们。我将其转换为atoi()
的int,将其转换为time_t
,然后在其上运行ctime()
。工作得很完美!
答案 0 :(得分:5)
如果只有整数而不是字符串中的值,则可以调用ctime
。如果只有某种方法将字符串转换为整数....
time_t c;
c = strtoul( "1360440555", NULL, 0 );
ctime( &c );
答案 1 :(得分:2)
您可以使用%s
(GNU extension)将以字符串形式提供的POSIX时间戳转换为细分时间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;
}
注意:本地时区是UTC(其他时区的结果不同)。