将UTC时间戳转换为C中的纪元时间

时间:2018-11-16 08:18:52

标签: c dst

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用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()

time_t result;
result = mktime(&t);

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

  

tm_mon

     

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

  

tm_year

     

自1900年以来的年数。