考虑到C语言中的DST,我想以纪元秒为单位转换UTC时间戳。我正在VS 2005上进行开发,因为这是旧产品。我浏览了各种网站,但没有用。
我们可以通过boost库来做到这一点,但不建议这样做。
我将输入传递为“ 2017-03-12T01:00:00Z”,即UTC时间戳,我想要它的时间间隔,即以秒为单位。当我将此时间转换回UTC时间时,它应该给我确切的结果作为输入时间戳。
答案 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年以来的年数。