在 Python 中使用 tz.localize 将 UTC 日期时间转换为英国日期时间

Posted

技术标签:

【中文标题】在 Python 中使用 tz.localize 将 UTC 日期时间转换为英国日期时间【英文标题】:Converting UTC datetime to UK datetime using tz.localize in Python 【发布时间】:2016-08-30 00:44:47 【问题描述】:

我正在尝试将 UTC 日期/时间转换为“欧洲/伦敦”时区。我曾尝试使用 tz.localize 使用日期,但我被告知日期时间并不幼稚。如果我尝试删除时区,我仍然会收到同样的错误。

基本上,我想得到这个日期: 2016 年 4 月 5 日 15:00 成为这个日期: 2016 年 4 月 5 日 14:00

我的代码如下,我使用 iso8601 解析日期。

date = 2016-05-04 15:00:00+00:00
fix_pars = iso8601.parse_date(str(date))

我尝试过使用 pytz.localize 但没有成功,因为它不喜欢我的日期已经设置了时区这一事实。

我发现这方面的文档确实令人困惑。我想要的只是一个神奇的函数,它需要一个日期并根据请求的时区进行转换。我最适合使用什么功能?

【问题讨论】:

date = 2016-05-04 15:00:00+00:00 不是有效的 Python。你为什么打电话给str(date)type(date) 是什么? 【参考方案1】:
import pytz
from datetime import datetime
tz = pytz.timezone('UTC')
naive_time = datetime.strptime('2016-04-05 15:00', '%Y-%m-%d %H:%M')
tz_time = tz.localize(naive_time)
london_tz = pytz.timezone('Europe/London')
london_time = tz_time.astimezone(london_tz)

这是我的输出:

>>> print tz_time
2016-04-05 15:00:00+00:00
>>> print london_time
2016-04-05 16:00:00+01:00

【讨论】:

将我的代码修改为:date = '2016-06-11 16:00:00+00:00' naive_time = datetime.strptime(date, '%Y-%m-%d %H :%M') tz_time = tz.localize(naive_time) london_time = tz_time.astimezone(london_tz) 但我得到... data_string[found.end():]) ValueError: 未转换的数据仍然存在: :00+00:00 @LemusThelroy 您必须将其转换为字符串,然后从中删除时区:str(theTime)[:-6],然后如果您想更新 naive_time 变量以包含秒数 naive_time = datetime.strptime(str(theTime)[:-6], '%Y-%m-%d %H:%M:%S') 如果我想将 london_time 转换为 dd/mm/yyyy hh:mm 格式,我应该使用什么函数?然后我会去阅读这方面的文档。 @LemusThelroy 您仍然可以使用strptime 方法。您只需编辑格式化字符串即可:naive_time = datetime.strptime('05/04/2016 15:00', '%d/%m/%Y %H:%M')【参考方案2】:

您不需要 tz.localize 与 utc 时区,因为它具有固定的 utc 偏移量(零)。如果您有 timezone-aware 日期时间对象(如其文本表示所示),则将其转换为 Europe/London 时区:

london_dt = aware_dt.astimezone(pytz.timezone('Europe/London'))

仅此而已。

【讨论】:

以上是关于在 Python 中使用 tz.localize 将 UTC 日期时间转换为英国日期时间的主要内容,如果未能解决你的问题,请参考以下文章

pytz UTC 转换

当python使用“Python.h”调用该c++进程时,如何在python中停止一个c++进程

在 Python 中使用 Weka 生成的决策树

在 python 中使用 soffice,Command 在终端中有效,但在 Python 子进程中无效

python 使用pymongo在python中使用MongoDB的示例

在 python 中使用命令行时出现语法错误