gpt4 book ai didi

c - IAR 、本地时间、mktime

转载 作者:行者123 更新时间:2023-12-04 11:07:19 27 4
gpt4 key购买 nike

我正在为您的 IAR 编译器使用 DLib,并希望将 UTC 时间戳转换为本地时间戳。

我位于德国,因此我对 __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 中调试了代码,一切似乎都在那里工作。我错过了什么吗?

最佳答案

我想我自己找到了。正确的字符串是::GMT+1:GMT+2:0100:032502+0:102502+0

DST 在 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);

关于c - IAR <time.h>、本地时间、mktime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com