【问题标题】:Time notation standard时间符号标准
【发布时间】:2011-07-24 13:02:49
【问题描述】:

我有以下脚本定义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,它与UTC 的偏移量为+08:00。意思是,它是格林威治的04:52:06

哪个是正确的? A 还是 B

【问题讨论】:

    标签: python timezone


    【解决方案1】:

    12:52:06+08:00 通常意味着它是比 UTC 早 8 小时的时区中的给定时间。所以 B 是正确的。

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

    注意:datetime.strptime 不适用于时区 - 您可以将 %z 格式代码用于 datetime.strftime,但不能用于 strptime。如果您需要这样做,请使用dateutil,请参阅How to parse dates with -0400 timezone string in python?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多