首页 > 解决方案 > 将UTC时间戳转换为C中的纪元时间

问题描述

考虑到 C 语言中的 DST,我想以纪元时间秒为单位转换 UTC 时间戳。我正在 VS 2005 上进行开发,因为这是旧产品。我浏览了各种网站,但它没有用。

我们可以通过 boost 库来做到这一点,但不建议这样做。

我将输入作为“2017-03-12T01:00:00Z”传递,即UTC时间戳,我想要它的纪元时间,即以秒为单位。当我将此纪元时间转换回 UTC 时间时,它应该给我准确的结果作为输入时间戳。

标签: cdst

解决方案


你可以利用mktime().

根据手册页,您必须解析输入并填写结构tm,定义为

struct tm {
    int tm_sec;         /* seconds */
    int tm_min;         /* minutes */
    int tm_hour;        /* hours */
    int tm_mday;        /* day of the month */
    int tm_mon;         /* month */
    int tm_year;        /* year */
    int tm_wday;        /* day of the week */
    int tm_yday;        /* day in the year */
    int tm_isdst;       /* daylight saving time */
};

然后,调用mktime()as

time_t result;
result = mktime(&t);

注意事项:请阅读链接手册并检查结构成员的适用值,尤其是

tm_mon

自一月以来的月数,范围为 0 到 11。

tm_year

自 1900 年以来的年数。


推荐阅读