我正在使用您的IAR编译器的DLib,并希望将UTC-timestamp转换为本地时间戳。
我位于德国,因此我对__getzone-method的实现如下:
char const * __getzone() {
return ":GMT+1:GMT+2:0100:(1980)032502+0:102503+0";
}我写了一些测试代码:
time_t ts = 1509238797L;//29.10.2017-02:59:57 3 seconds before dst
struct tm* pre = localtime(&ts);
time_t after = ts + 5L;//wait 5 seconds -> 29.10.2017-02:00:02
struct tm* post = localtime(&after);"pre“变量可以,但"post”变量包含值: 29.10.2017-03:00:02,但它应该是29.10.2017-02:00:02。
我在Visual-Studio中调试了代码,一切似乎都在那里工作。我是不是遗漏了什么?
发布于 2017-07-13 20:04:38
我想是我自己找到的。正确的字符串是::GMT+1:GMT+2:0100:032502+0:102502+0
夏令时2点开始,2点结束,不像我想的那样是3点。我猜api的描述不是很完美。
验证DST跳转的一些测试:
//Forward
time_t ts = 1490489997L;//26.03.2017-01:59:57 3 seconds before dst
struct tm* pre = localtime(&ts);
time_t after = ts + 5L;//wait 5 seconds -> 26.03.2017-03:00:02
struct tm* post = localtime(&after);
//Backward
time_t ts = 1509238797L;//29.10.2017-02:59:57 3 seconds before dst
struct tm* pre = localtime(&ts);
time_t after = ts + 5L;//wait 5 seconds -> 29.10.2017-02:00:02
struct tm* post = localtime(&after);https://stackoverflow.com/questions/45076197
复制相似问题