【问题标题】:Python3.5 Time Zone conversionPython3.5时区转换
【发布时间】:2019-06-14 03:36:36
【问题描述】:

我在这里尝试了许多关于转换时区对象的帖子/建议,但都失败了。我希望有人能指出一个简单的方法来做到这一点。

我的字符串/日期时间为2017-05-11T16:24:56-04:00 我可以通过多种方式(dateutil 等)将其解析为 datetime 对象。 打印时我得到

datetime.datetime(2017, 5, 11, 16, 24, 56, tzinfo=tzoffset(None, -14400))

所以它得到一个 tzoffset。

尝试任何转换似乎都不会更新实际时间部分,只会更新区域信息。

如何将此字符串转换为我的本地时区(EST,或偏移 -5 小时)。

编辑:尝试 astimezone() 得到这个:

dt.astimezone()                                                                   
Out[18]: datetime.datetime(2017, 5, 11, 16, 24, 56, 
tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT'))

谢谢!

【问题讨论】:

  • @Norrius 试过了,没用
  • @Norrius 也许它正在工作......我想我错了没有工作,因为它意识到我在 -4 小时因为夏令时:( 试图确认。

标签: python datetime python-3.5


【解决方案1】:

当您使用 tzinfo 转换它时,您只需更改输出字符串的后缀(例如使用 tzutc()):2017-05-11 16:24:56+00:00

如果你想在你的时区打印它,首先使用它所代表的实际时区创建 datetime 对象:

dt = datetime(2017, 5, 11, 16, 24, 56,
              tzinfo=tzoffset(None, -18000))
# 2017-05-11 16:24:56-05:00

然后使用以下命令将其转换为所需的时区:

mydt = dt.astimezone(tzutc())
# 2017-05-11 21:24:56+00:00

【讨论】:

  • 我一直在尝试,我认为它有效,我的问题是我通过解析字符串来创建日期时间。这似乎与 dateutil 解析器一起工作,但是在转换它时遇到问题......但是,我认为我的问题是我没有意识到我在 UTC-4 由于夏令时 EDT(而不是 EST,它是-5)。
  • @warath-coder,我很高兴它对你有用。我不确定您是否需要其他帮助。您在将字符串解析为日期时间对象时遇到问题吗?
  • 什么是tzoffset?
  • @JohnMee,它是“时区偏移”
  • @DanielTrugman 是的,这个难题的缺失部分是 tzoffset belongs to the python-dateutil package
猜你喜欢
  • 2015-04-26
  • 2012-06-15
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多