底线是,在VC版本6中,tzset()不能正常工作。然而,对于VC版本8,tzset()现在可以工作了(我认为它也可以在7版中使用,但我没有那个版本可以检查)。在
所以现在所要做的就是在源代码中启用“让你工作”并重新编译(和测试)。在
根据我的经验,对于不同的TZ设置的函数的所有需求都需要一个工作的tzset()。任何时候更改C Lang TZ var或-Windows时区信息时都必须调用tzset()。这在VC版本6中是不可能的,这就是为什么HAVE_WORKING_TZSET没有被启用(但现在至少应该为VC版本8及更高版本启用)。在
顺便说一句,对于我所做的所有日期/时间的事情,我总是有一个SetUtcTime()和unsetctime(),它们将TZ设置为GMT并相应地调用tzset()。我也有功能
临时设置到另一个时区。这是唯一正确的方法!根据多年的经验,我可以说任何其他的都是麻烦。以及日历.timegm()不是
对的。使用tzset()。在
下面是它正在工作的证据(因此请使用bug作者修复windows代码):
(我是从另一台计算机上输入的,所以希望没有拼写错误,但它是
我提出的观点,而不是代码)。在
注意:下面都是PYTHON(我从PYTHON的ctype接口调用C Lang)
注意:因为我是通过DLL边界设置TZ,线程本地和全部
那些废话,不能用来解决问题。必须重新启用HAVE-WORKING-TZSET。在import time
from ctypes import *
dTime = time.time ()
nTime = int (dTime)
intTime = c_int (nTime)
print time.ctime (dTime)
print c_char_p (cdll.msvcrt.ctime (addressof (intTime))).value
->。。。21:02:40。。。(python)
->。。。21:02:40。。。(C语言)
^{pr2}$
(正常情况下时间.tzset将调用()并调用inittimezone()进行更新
python的时区变量)print time.ctime (dTime)
print c_char_p (cdll.msvcrt.ctime (addressof (intTime))).value
->。。。21:02:40。。。(python)
->。。。11: 02:40。。。(C lang)<;-底层VC版本8现在正在工作!在
(因此,如果为(版本8及以上)定义了“工作”TZSET,则会得到以下信息:)
->。。。11: 02:40。。。(python)
->。。。11: 40:02。。。(C语言)
只要检查一下源代码就知道我的意思了。在
我用最新的python'2.0'系列2.7.2进行了检查。在