【问题标题】:How to convert UTC-4 to US/Eastern in python?如何在 python 中将 UTC-4 转换为美国/东部?
【发布时间】:2013-07-08 20:44:33
【问题描述】:

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

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

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

注意:我最初的问题将 EST 描述为 EDT。但这并没有改变问题的本质,即如何从一个时区到另一个时区。经过一些阅读(遵循 cmets),我认为 python(特别是 pytz)不会将 EST 和 EDT 视为单独的时区,而是将其视为美国/东部的两种风格。但这是一个实现细节。通常将 EST 和 EDT 称为两个不同的时区,例如here.

【问题讨论】:

标签: python time timezone


【解决方案1】:

根据您的更新和 cmets,我现在了解到您的数据固定为 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,它会正常工作,但请注意,这是一个别名,它只是为了向后兼容。

【讨论】:

  • 您对我的输入文本文件的来源做出了几个不正确的假设。一:它与在主机操作系统上禁用夏令时无关。二:无需质疑生成文件的人——文件上的时间戳不正确(由于 Bloomberg Excel API 和从远程位置登录到其 PC 的人的一些奇怪交互的结果)。我可以看到截至 2013 年 3 月 8 日的时间戳偏离了 +1 小时,而在 2013 年 3 月 8 日之后它们是正确的。无需回到生成文件的人那里。它可以修复。
  • 我意识到要更正我的文件,我需要从 EDT(又名 UTC-4)转换为美国/东部。我更新了我的问题。
  • Ahhhh.. 现在我们到了某个地方。知道您正在尝试修复无效数据会有所帮助。因此,您拥有静态 UTC-4 数据,并且您希望确保将本应为 EDT 的时间移至该数据,而其他时间则保持不变。是吗?
  • 我不会说它无效。我称之为UTC-4。我想将记录在 UTC-4 中的时间戳转换为美国/东部时间,并在需要时正确应用夏令时。
  • 好吧,不管你怎么称呼它,我编辑的答案就是你想要的解决方案。
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 2016-05-25
  • 2022-06-29
  • 1970-01-01
  • 2021-09-07
  • 2011-12-14
  • 2016-05-24
  • 2021-05-18
相关资源
最近更新 更多