关于python:如何将日期字符串转换为指定时区中的日期时间对象

How to convert date string to a datetime object in a specified timezone

我可以使用以下方法将在YYYY-MM-DD中格式化的给定日期字符串转换为datetime对象:

1
2
from datetime import datetime
dt = datetime.strptime(date_str, '%Y-%m-%d')

但是,默认情况下,它使用当前机器的时区。

在转换中是否有指定特定时区(如UTC、PST等)的方法,以便获得的datetime对象位于该时区中?

我正试图在Python3.4.3中实现这一点。


这不可能只使用Python的标准库。

为了充分的灵活性,安装python-dateutilpytz并运行:

1
2
date_str = '2015-01-01'
dt = pytz.timezone('Europe/London').localize(dateutil.parser.parse(date_str))

这将为您提供一个具有欧洲/伦敦时区的日期时间。

如果只需要解析'%Y-%m-%d'字符串,那么只需要pytz字符串:

1
2
3
from datetime import datetime
naive_dt = datetime.strptime(date_str, '%Y-%m-%d')
dt = pytz.timezone('Europe/London').localize(naive_dt)