mktime夏令时处理

Posted mingzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mktime夏令时处理相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/dongzhiquan/archive/2011/11/05/2237075.html       

 

我们的最终目的是把字符串格式的时间转换为内部使用的“日历时间”,即到UTC 1970年1月1日零时的秒数。这里就存在夏令时的问题。比如俄罗斯时间2008年10月26日2:30由于夏令时的跳变会经过两次,这两次所代表的“日历时间”明显不同。如果仍按照上面的程序,由mktime()函数来决定这个时间是否处于夏令时(它会根据当前时区自动判断,在没有发生时间重叠的情况下处理是正确的)就会有问题。这时我们不能使用ttm.tm_isdst = -1了,而是明确使用ttm_tm_isdst = 1来告知mktime()现在处于夏令时,明确使用ttm.tm_isdst = 0来告知未处于夏令时。 
结论:使用字符串时间表示时一定要有标记表示这个时间是否处于夏令时,推荐在时间字符串后面添加DST或者加上时区。否则,无法正确处理夏令时情况。如果时间字符串表示的是UTC时间,则无需上述处理过程。

以上是关于mktime夏令时处理的主要内容,如果未能解决你的问题,请参考以下文章

mktime 返回不正确的值

让 mktime() 在 C++ 中忽略 DST 和本地时区

time模块

使用 DateTime 类处理夏令时

为啥 R 在多年之间不能始终如一地处理夏令时?

PHP 处理夏令时的时区