Python:strftime,gmtime不遵守时区


问题内容
import time
print time.strftime("%a, %d %b %Y %I:%M %p %Z", time.gmtime())

我居住在加利福尼亚州。由于某些原因,此代码以GMT报告时间,而不是遵守系统时区。我知道strftime知道我在太平洋地区,因为它仍在末尾显示“
PST”,但仍要提前8个小时。还有其他人注意到吗?有人知道我的系统或代码有什么问题吗?

编辑
date在命令行中运行给我正确的日期。另外,我已经在两台不同的计算机(mac和linux)上运行了此程序,它们都报告了8个小时的提前。您应该在使用strftime之前更正时区吗?


问题答案:

time.gmtime()以UTC时间返回时间。你需要的是time.localtime(),这

时区感知。该行为在time模块文档中已得到充分记录

编辑:

要将任何time.time()样式时间戳转换为struct_time,您可以为提供一个参数
time.localtime()

>>> print time.strftime("%a, %d %b %Y %I:%M:%S %p %Z", time.localtime(10.5))
Thu, 01 Jan 1970 02:00:10 AM EET