我正在为您的IAR编译器使用DLib,并希望将UTC时间戳转换为本地时间戳。
我位于德国,因此我对__getzone方法的实施如下:
cats
我写了一些测试代码:
char const * __getzone() {
return ":GMT+1:GMT+2:0100:(1980)032502+0:102503+0";
}
“pre”变量很好,但“post”变量包含值: 29.10.2017-03:00:02但应该是29.10.2017-02:00:02。
我调试了Visual-Studio中的代码,一切似乎都在那里工作。我错过了什么吗?
答案 0 :(得分:1)
我想我自己就找到了。正确的字符串是: :GMT + 1:GMT + 2:0100:032502 + 0:102502 + 0
DST从2点开始到2点结束,而不是像我想象的那样在3点钟。 我猜api描述并不完美。
验证DST-Jumps的一些测试:
//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);