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之前,难道需要自己调整时区吗?
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