时间符号标准

时间:2011-07-24 13:02:50

标签: python timezone

我有以下脚本定义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

1 个答案:

答案 0 :(得分:5)

12:52:06+08:00一般意味着它是在UTC之前8小时的时区中给定的时间。所以 B 是正确的。

但是,您错误地生成了时间字符串time.gmtime()只返回一个时间,没有任何时区,你告诉datetime()时间是在马尼拉时区。因此,对于这种特殊情况, A 是正确的。

注意:datetime.strptime不适用于时区 - 您可以使用%z的{​​{1}}格式代码,但不能使用datetime.strftimestrptime。如果您需要执行此操作,请使用dateutil,请参阅How to parse dates with -0400 timezone string in python?