用C语言将UTC时间戳转换为历元时间

用C语言将UTC时间戳转换为历元时间,c,dst,C,Dst,考虑到C语言中的DST,我想将UTC时间戳转换为历元时间秒。我在VS2005上做开发,因为这是一个遗留产品。我浏览了各种网站,但都没有用 我们可以通过boost库实现这一点,但不推荐使用 我将输入传递为2017-03-12T01:00:00Z,即UTC时间戳,并且我想要它的纪元时间,即秒。当我将这个历元时间转换回UTC时间时,它应该会给出准确的结果作为输入时间戳。您可以利用 根据手册页,您必须解析输入并填充结构tm,定义为 struct tm { int tm_sec;

考虑到C语言中的DST,我想将UTC时间戳转换为历元时间秒。我在VS2005上做开发,因为这是一个遗留产品。我浏览了各种网站,但都没有用

我们可以通过boost库实现这一点,但不推荐使用

我将输入传递为2017-03-12T01:00:00Z,即UTC时间戳,并且我想要它的纪元时间,即秒。当我将这个历元时间转换回UTC时间时,它应该会给出准确的结果作为输入时间戳。

您可以利用

根据手册页,您必须解析输入并填充结构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

注意事项:请阅读相关手册并检查结构构件的适用值,尤其是

汤姆蒙

自1月份以来的月数,范围为0到11

tm_年

自1900年以来的年数


促进在C中?如何?@ SavavgHoh产品的C和C++混合。这是好的,但我从来不知道Boost可以用在C.@ SoeavGHOSH中,它所需要的是C++中的CDECL包装器功能,它可以从C调用,然后使用Boo.@ HyDE技术上是正确的…但是它值得吗?如果我之前的陈述不清楚,很抱歉当我将UTC时间戳转换为tm结构并将其传递给mktime时,会产生历元时间,但当我使用gmtime再次将历元时间转换回tm结构时,会有8小时的间隔。@Prashant请显示不起作用的代码。当我将UTC时间戳转换为tm结构并将其传递给mktime时,它产生了历元时间,但当我再次使用gmtime将历元时间转换回tm结构时,有8小时的间隔。Eg-tm-localTMTest;localTMTest.tm_year=2017-1900;localTMTest.tm_mon=3-1;localTMTest.tm_mday=12;localTMTest.tm_小时=0;localTMTest.tm_min=0;localTMTest.tm_sec=0;localTMTest.tm_isdst=-1;time\u t localTimeTest=mktime&localTMTest;struct tm*ptm=gmtime和localTimeTest;在ptm中,小时设置为8,因为我的时区设置为UTC-8PST@Prashant我没看到,查查。谢谢苏拉夫。但在我的系统上,由于时区的影响,显示为8小时。当我在IST时区运行时,由于+05.30时差,它给我的日期是11,时间是18:30。
time_t result;
result = mktime(&t);