我有以下脚本定义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()
。假设我只有时间字符串本身。我该如何阅读?
A。我需要执行添加才能获得马尼拉时间。读完这篇文章后,我应该做一个计算,我会说
格林威治的
12:52:06
,我应该+08:00
。意思是马尼拉的20:52:06
。
B。我会以面值表示并说出
马尼拉的
12:52:06
,它与+08:00
的UTC偏离。意思是格林威治的04:52:06
。
哪个是对的? A 或 B ?
答案 0 :(得分:5)
12:52:06+08:00
一般意味着它是在UTC之前8小时的时区中给定的时间。所以 B 是正确的。
但是,您错误地生成了时间字符串。 time.gmtime()
只返回一个时间,没有任何时区,你告诉datetime()
时间是在马尼拉时区。因此,对于这种特殊情况, A 是正确的。
注意:datetime.strptime
不适用于时区 - 您可以使用%z
的{{1}}格式代码,但不能使用datetime.strftime
。strptime
。如果您需要执行此操作,请使用dateutil
,请参阅How to parse dates with -0400 timezone string in python?