IAR <time.h>,localtime,mktime

时间:2017-07-13 09:09:14

标签: c iar mktime localtime time.h

我正在为您的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中的代码,一切似乎都在那里工作。我错过了什么吗?

1 个答案:

答案 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);