Python: strftime, gmtime不尊重时区

22 投票
2 回答
36612 浏览
提问于 2025-04-16 10:33
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 个回答

1

要在你的Unix系统上更改时区,可以这样做:

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

/usr/share/zoneinfo/这个文件夹里找找你想要的时区,然后把上面的命令改一下就行了。

38

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

撰写回答