ISO到datetime对象:'z'是一个糟糕的指令
我正在尝试使用下面的代码将ISO转换为datetime
:
dt = datetime.datetime.strptime("2013-07-23T15:10:59.342107+01:00", "%Y-%m-%dT%H:%M:%S.%f%z")
我得到下面的错误:
'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S.%f%z'
将格式以上的ISOstring转换为datetime
对象的最佳方法是什么? 我正在使用Python版本2.7.6。
欢迎来到Pythondate时间! 处理date和时间是非常复杂的,Python并没有完全包含这种情况下的电池。 你不能在strptime
使用%z
,因为Python没有类来表示时区(你应该实现你自己的,或者更好的还包括一些其他的库)。
你想使用pytz
和python-dateutil
。 更多细节请看这里:
Python strptime()和时区?
因为我使用django
所以我可以利用这个工具。
https://github.com/django/django/blob/master/django/utils/dateparse.py
>>> from django.utils.dateparse import parse_datetime >>> parse_datetime('2013-07-23T15:10:59.342107+01:00') datetime.datetime(2013, 7, 23, 15, 10, 59, 342107, tzinfo=+0100)
你可以使用自己的正则expression式来代替strptime
。