我有以下脚本定义一个tzinfo
对象:
import time
from datetime import datetime, timedelta, tzinfo
class ManilaTime(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=8)
def tzname(self, dt):
return "Manila"
manila = ManilaTime()
现在,我要写
t = datetime(tzinfo=manila, *time.gmtime()[:-3])
print t
得到
2011-07-24 12:52:06+08:00
问题: 12:52:06+08:00
是什么意思?我想学习如何根据标准读取包含UTC偏移量的时间信息。请忽略我使用了time.gmtime()
。假设我只有时间字符串本身。我怎么读?
。我需要执行加法来获得马尼拉时间。读到这里,我应该做一个计算,然后写入
格林威治的
12:52:06
,我应该用+08:00
来抵消。这是马尼拉的20:52:06
。
B。我就按字面意思写
马尼拉的
12:52:06
,和UTC的+08:00
偏移。也就是格林威治的04:52:06
。
哪个是正确的?A还是B
12:52:06+08:00
通常意味着它是时区中比UTC早8小时的给定时间。所以B是正确的。
但是,错误地生成了时间字符串。time.gmtime()
只返回一个时间,没有任何时区,并且您告诉datetime()
该时间位于马尼拉时区。所以对于这种特殊情况,A是正确的。
注意:datetime.strptime
不能与时区一起工作——你可以使用datetime.strftime
的%z
格式代码,但不能使用strptime
。如果您需要这样做,请使用dateutil
,参见如何在python中使用-0400 timezone字符串解析日期?