0x4*_*B1D 6 python logging timezone
我正在运行在Windows 7上使用cygwin下的日志记录模块的python脚本.该date命令报告正确的时间:
$ date
Tue, Aug 14, 2012  2:47:49 PM
Run Code Online (Sandbox Code Playgroud)
但是,python脚本是五个小时:
2012-08-14 19:39:06,438: Done!
Run Code Online (Sandbox Code Playgroud)
配置脚本日志记录时,我不做任何花哨的事情:
logging.basicConfig(format='%(asctime)-15s: %(message)s', level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)
有人能告诉我发生了什么以及如何解决它吗?
在导入日期/时间模块之前,您需要在python脚本中取消设置环境"TZ".它由cygwin设置但不被Windows理解:
if os.getenv("TZ"):
    os.unsetenv("TZ")
Run Code Online (Sandbox Code Playgroud)
        看来如果TZ设置了环境变量,Cygwin 中的 Python 将在 GMT (UTC) 时区运行。TZ即使设置为与 Windows 框相同的时区也是如此!
作为解决方法,您可以致电unset TZ在调用 Python 之前调用 bash shell,然后 Python 将使用 Windows 时区。对我来说,删除 Python 中的 ENV 变量不起作用,它需要在启动 Python 之前发生(即使在os.environ['TZ']导入任何与时间相关的模块之前在 Python 过程中尽早删除,可能是因为必须导入os,也许触发 Cygwin/Python“bug”,使时区变为 UTC?)。
unset TZ人们可以通过添加到 .bash_profile 文件(其中/home/<user>是 Cygwin 安装位置的子目录)来自动修复。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1506 次  |  
        
|   最近记录:  |