时区偏移的表达 - 澄清

时间:2013-05-21 17:03:13

标签: python datetime timezone pytz

我目前正在处理的事情需要世界各地用户的本地化时间。所有日期时间都存储为UTC,因此转换它们很容易,我们有一个已知的,安全的,参考点等等。

然而,关于如何表达偏移的一些事情让我感到头疼。

>>> timezone.now()  # get the UTC-stamped server time as an example
datetime.datetime(2013, 5, 21, 16, 37, 54, 62598, tzinfo=<UTC>)

>>> eastern = pytz.timezone('US/Eastern')  # localise this to US/Eastern
>>> utc_dt.astimezone(eastern)
datetime.datetime(2013, 5, 21, 12, 37, 54, 62598,   
    tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>) 

(这是我在日期时间输出中的换行符,只是为了让我更容易发现我所处的位置。)

偏移的表达似乎有点超过顶部。它不是简单地说它与UTC相差-4h,而是说它是减去一天加20:00小时。是吗?

1 个答案:

答案 0 :(得分:2)

您将看到repr时区类的pytz,其中包含在现实生活中使用它时无关紧要的实施细节。如果您print同一个对象,您会看到不同的内容:

>>> print utc_dt.astimezone(eastern)
2013-05-21 15:00:27.648000-04:00