2

我一直在寻找一种将字符串(以纪元时间)转换为日期的方法。

基本上,我需要把这个:(1360440555以字符串形式)做成这个:Feb 9 12:09 2013

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

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

4

2 回答 2

6

如果你的值是整数而不是字符串,你可以调用ctime. 如果只有某种方法可以将字符串转换为整数....

time_t c;
c = strtoul( "1360440555", NULL, 0 );
ctime( &c );
于 2013-02-09T23:19:07.267 回答
3

您可以使用%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(与其他时区结果不同)。

于 2013-02-09T23:53:22.417 回答