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

3

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

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

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

是否有一种方法可以指定特定的时区(例如UTC,PST等)进行转换,以便获得的datetime对象在该时区中。

我正在尝试在Python 3.4.3中实现此目标。


可能是重复的问题:Python 时区转换 - Peter Tillemans
请参见以下链接,了解有关Python时区转换的内容:https://dev59.com/Bmgu5IYBdhLWcg3w5LBa - Peter Tillemans
如果你打算使用除了UTC以外的时区,那么你应该阅读这篇文章:https://dev59.com/a3VD5IYBdhLWcg3wBWvd#117615 - Tanveer Alam
看一下这个问题 https://dev59.com/sWw05IYBdhLWcg3wuUKZ - Matthew Runchey
谢谢你的指引。看起来大多数解决方案都使用pytz,但我想知道Python 3.4中是否有内置的东西可以帮助解决这个问题。 - skyork
1
@skyork:不是的。Python 3.4没有提供一个可移植的时区数据库访问。在Unix上,你可以设置TZ环境变量并调用time.tzset()来更改你的本地时区。否则,你需要使用第三方模块如pytz。还有旧的PEP 0431--时区支持改进;目前尚不清楚它是否将被包含在Python 3.5中。 - jfs
1个回答

3

仅使用Python标准库无法实现此操作。

为了获得完全的灵活性,请安装python-dateutilpytz并运行:

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接