我在 Suse 10 中使用 mktime(struct tm*) 函数。
现在,我注意到启用夏令时时出现一些奇怪的行为。假设我已启用夏令时,从 9 月 15 日 18:10 开始,日光校正时间为 30 分钟。现在,当我使用日期为 Sep 15 18:10 的 tm 结构调用 mktime 并且 tm_isdst 设置为 0 时,我仅在 tm_isdst 设置为 1 的情况下返回 tm 结构中的相同值。
但是,如果通过日期为 9 月 15 日 18:10 并将 tm_isdst 设置为 1,那么我发现时间更改为 17:40。在 9 月 15 日 18:10 到 9 月 15 日 18:40 之间经过的时间会注意到 tm 结构中的这种更正,但之后不会发生时间更正,并且 dst 标志保持启用状态。即使我将日期传递为 9 月 16 日 18:10,也不会发生时间校正,只有 dst 标志保持启用状态。
我完全糊涂了。这是 mktime 的正确行为吗?