2

我从文本文件中读取时间戳。这些时间戳采用 UTC-4 格式。我需要将它们转换为美国/东部。

import datetime
datetime_utc4 = datetime.datetime.strptime("12/31/2012 16:15", "%m/%d/%Y %H:%M")

如何将其转换为美国/东部?最好是单行答案。

注意:我最初的问题是从美国东部时间到美国东部时间。但这并没有改变问题的本质,即如何从一个时区到另一个时区。经过一些阅读(以下评论),我认为 python(尤其是 pytz)不会将 EST 和 EDT 视为单独的时区,而是将其视为美国/东部的两种风格。但这是一个实现细节。通常将 EST 和 EDT 称为两个不同的时区,请参见此处

4

1 回答 1

5

根据您的更新和评论,我现在了解到您的数据固定为 UTC-4,您希望更正此问题,使其在美国东部时间有效,包括适当的 EST/EDT。这是使用pytz执行此操作的方法。

from datetime import datetime
import pytz

dt = datetime.strptime("12/31/2012 16:15", "%m/%d/%Y %H:%M") \
             .replace(tzinfo = pytz.FixedOffset(-240)) \
             .astimezone(pytz.timezone('America/New_York'))

请注意,我使用了America/New_York时区 ID。这是最正确的标识符形式。您可以改为使用US/Eastern它,它会正常工作,但请注意这是一个别名,它只是为了向后兼容。

于 2013-07-09T01:24:26.193 回答