Python:strftime,gmtime不尊重时区

时间:2011-01-24 23:47:34

标签: python timezone

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

我住在加利福尼亚。出于某种原因,此代码报告GMT中的时间,而不是遵守系统时区。我知道strftime知道我在太平洋,因为它仍然在最后打印'PST',但它仍然提前8小时。还有其他人注意到这一点吗?任何人都知道我的系统或我的代码有什么问题吗?

修改: 在命令行运行date给我正确的日期。另外,我在两台不同的计算机(mac和linux)上运行它们,它们都提前8小时报告。您是否希望在使用strftime之前纠正时区?

2 个答案:

答案 0 :(得分:28)

time.gmtime()以UTC格式返回时间。您需要的是time.localtime(),其中 时区感知。 time module documentation中详细记录了此行为。

编辑:

要将任何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

答案 1 :(得分:0)

要更改unix系统上的时区,请执行以下操作:

ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

/usr/share/zoneinfo/中浏览以找到您想要的内容并更改上面的命令