【发布时间】:2017-01-29 05:10:51
【问题描述】:
我正在使用以下代码将 UTC 时间转换为本地时间:
def UTC_to_local(timezone_str, datetime_UTC):
"""
convert UTC datetime to local datetime. Input datetime is naive
"""
try:
from_zone = dateutil.tz.gettz('UTC')
to_zone = dateutil.tz.gettz(timezone_str)
datetime_UTC = datetime_UTC.replace(tzinfo=from_zone)
# Convert time zone
datetime_local = datetime_UTC.astimezone(to_zone)
except Exception as e:
raise
return datetime_local
如果我给出了正确的 timezone_str(例如,'America/Chicago'),它会按预期工作。 但即使我给出了意外的 timezone_str(例如,'America/Chicago1' 或 'Americaerror/Chicago'),仍然没有例外,它只是返回不同的数字!我认为为意外的时区字符串获取异常比仅仅“做出最佳猜测”更合理。
此外,我发现(使用 IPYTHON):
In [171]: tz.gettz("America/Chicago")
Out[171]: tzfile('/usr/share/zoneinfo/America/Chicago')
In [172]: tz.gettz("America/Chicago1")
Out[172]: tzstr('America/Chicago1')
In [173]: tz.gettz("Americaerror/Chicago")
(None)
【问题讨论】:
-
你可以使用pytz:pypi.python.org/pypi/pytz