将Epoch Time字符串转换为Time

时间:2013-02-09 23:06:40

标签: c linux unix time epoch

我一直在寻找一种方法将字符串(在Epoch时间内)转换为日期。

基本上,我需要这样做:1360440555(以字符串形式)并将其改为:Feb 9 12:09 2013

我一直在关注strptime和strftime,但似乎都不适合我。有什么建议吗?

编辑:谢谢,伙计们。我将其转换为atoi()的int,将其转换为time_t,然后在其上运行ctime()。工作得很完美!

2 个答案:

答案 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(其他时区的结果不同)。