如何将Unix TimeStamp转换为day:month:date:年份格式为C?

时间:2013-09-02 23:41:48

标签: c unix-timestamp

我们如何将C中的Unix时间戳转换为day:month:date:year?例如。如果我的unix时间戳是1230728833(int),我们如何将此值转换为this-> 2008年8月21日星期四?

谢谢,

2 个答案:

答案 0 :(得分:5)

Per @ H2CO3使用strftime(3)的正确建议,这是一个示例程序。

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

static const time_t default_time = 1230728833;
static const char default_format[] = "%a %b %d %Y";

int
main(int argc, char *argv[])
{
        time_t t = default_time;
        const char *format = default_format;

        struct tm lt;
        char res[32];

        if (argc >= 2) {
                t = (time_t) atoi(argv[1]);
        }

        if (argc >= 3) {
                format = argv[2];
        }

        (void) localtime_r(&t, &lt);

        if (strftime(res, sizeof(res), format, &lt) == 0) {
                (void) fprintf(stderr,  "strftime(3): cannot format supplied "
                                        "date/time into buffer of size %u "
                                        "using: '%s'\n",
                                        sizeof(res), format);
                return 1;
        }

        (void) printf("%u -> '%s'\n", (unsigned) t, res);

        return 0;
}

答案 1 :(得分:1)

此代码可帮助您将时间戳从系统时间转换为UTC和TAI可读格式。

eating