【发布时间】:2019-06-12 00:53:36
【问题描述】:
所以我试图将给定时区的几个小时(10:00:00、14:00:00 等)转换为 UTC。
当我这样做时,我总是发疯似地把“15:51:00”之类的东西拿回来。
当您到达该行并打印它正在使用的值时,它正在使用如下内容:
1900-01-01 12:00:00-05:51
这很好,除了 -05:51 位。我不知道为什么-05:51 在那里,这给我带来了问题。 UTC 转换是每小时,是吗?我认为这与我的时区转换有关,但我真的不明白他们为什么要这样做。
这是一个具有相同错误输出的最小示例;它返回15:51:00,而它应该只返回一个小时,而不是分钟。
import datetime
from dateutil import tz
jj = datetime.datetime.strptime("10:00:00", "%H:%M:%S")
tzz = tz.gettz('US/Central')
def constructstring(tzz,x):
inter2 = x.replace(tzinfo=tzz) #ERROR HAPPENS HERE (I'm pretty sure anyways)
inter3 = inter2.astimezone(tz.tzutc())
return inter3
print(constructstring(tzz,jj).strftime("%H:%M:%S"))
【问题讨论】:
-
您需要使用
localize()方法,否则您将获得历史时区偏移量。 -
你至少能把它简化为一个最小的例子吗?我们不需要所有这些字典定义。
-
Python 3.7,dateutil 版本 2.7.5。
-
我没有看到完全相同的偏移量可能是由于操作系统的差异。我在 Mac OS 10.13 上运行它,我会从你的系统中获得不同的时区文件,和/或
gettz()在你的系统上返回一个不同的特定时区类实例。 -
print(tzz.utcoffset(jj))为您带来了什么?
标签: python-3.x datetime date-conversion python-dateutil