Convert JSON date string to Python datetime

笑着哭i 提交于 2019-11-28 19:13:33

Try the following format:

%Y-%m-%dT%H:%M:%S.%fZ

For example:

>>> datetime.datetime.strptime('2012-05-29T19:30:03.283Z', '%Y-%m-%dT%H:%M:%S.%fZ')
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000)

The Z in the date just means that it should be interpreted as a UTC time, so ignoring it won't cause any loss of information. You can find this information here: http://www.w3.org/TR/NOTE-datetime

To provide an alternative, if you don't mind installing the python-dateutil package, you can use dateutil.parser.parse. Be advised that the format of the input is guessed by parse; an invalid input can still be interpreted, correctly or otherwise.

Without timezone

If you would rather not have the time zone set, which is perfectly fine if you represent all times internally as UTC only, use:

>>> dateutil.parser.parse('2012-05-29T19:30:03.283Z', ignoretz=True)
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000)

With timezone

Note that unlike datetime.datetime.strptime, this default call to parse automatically preserves the UTC time zone.

>>> import dateutil.parser
>>> dateutil.parser.parse('2012-05-29T19:30:03.283Z')
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=tzutc())

If a test assertion for equality needs to be made, the expected object can be constructed as:

>>> import datetime
>>> datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=dateutil.tz.tzutc())
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!