我正在使用Suse 10中的mktime(struct tm*)函数。
现在,我注意到在启用日光节约时间时的一些奇怪行为。比方说,我已经启用了夏令时,在9月15日18:10开始,夏令时的校正时间为30分钟。现在,当我用日期为9月15日18:10的tm结构调用mktime,并且tm_isdst被设置为0时,我在tm结构中得到相同的值,只是tm_isdst被设置为1。
但是,如果把日期传成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的正确行为吗?