Python 如何将日期字符串转换为指定时区中的datetime对象

Python 如何将日期字符串转换为指定时区中的datetime对象,python,datetime,python-3.x,python-3.4,Python,Datetime,Python 3.x,Python 3.4,我可以使用以下方法将YYYY-MM-DD格式的给定日期字符串转换为datetime对象: from datetime import datetime dt = datetime.strptime(date_str, '%Y-%m-%d') 但是,默认情况下,这将使用当前机器的时区 是否有方法在转换中指定特定时区(如UTC、PST等),以便获得的datetime对象位于该时区中 我试图在Python 3.4.3中实现这一点。仅使用Python的标准库是不可能的 要获得充分的灵活性,请安装pyth

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

from datetime import datetime
dt = datetime.strptime(date_str, '%Y-%m-%d')
但是,默认情况下,这将使用当前机器的时区

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


我试图在Python 3.4.3中实现这一点。

仅使用Python的标准库是不可能的

要获得充分的灵活性,请安装
python-dateutil
pytz
并运行:

date_str = '2015-01-01'
dt = pytz.timezone('Europe/London').localize(dateutil.parser.parse(date_str))
这将为您提供欧洲/伦敦时区的日期时间

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

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

如果你想使用除UTC以外的时区,那么你应该阅读这个问题@skyork:no。Python 3.4不提供对时区数据库的可移植访问。在Unix上,您可以设置
TZ
envvar并调用
time.tzset()
来更改本地时区。否则,您需要第三方模块,如
pytz
。有老的;目前还不清楚它是否会包含在Python3.5中。