什么日期时间格式字符串是2017-01-05T14:23:33.986-0500在Python中

时间:2017-01-06 15:26:17

标签: python

我有一个字符串:

t = "2017-01-05T14:23:33.986-0500"

我需要将其转换为Python日期。

我用过:

t_obj = datetime.strptime(t, '%Y-%m-%dT%H:%M:%S.%f')

我认为它是在YYYY-MM-DD,时间为HH:MM:SS.sss,但我无法弄清楚-0500可能是什么......它可以减去-5小时的UTC? / p>

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

%z是您需要的,它是UTC的时区偏移,请参阅docs

  

%z - 格式为+ HHMM或-HHMM的UTC偏移量(如果是对象,则为空字符串   很天真)。 (空),+ 0000,-0400,+ 1030

In [89]:
t= "2017-01-05T14:23:33.986-0500"
dt.datetime.strptime(t, '%Y-%m-%dT%H:%M:%S.%f%z')

Out[89]:
datetime.datetime(2017, 1, 5, 14, 23, 33, 986000, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))

答案 1 :(得分:0)

EdChum的answer绝对是正确的。但是,有一种更简单的方法可以解析日期 - python-dateutil

>>> from dateutil.parser import parse
>>> parse("2017-01-05T14:23:33.986-0500")
datetime.datetime(2017, 1, 5, 14, 23, 33, 986000, tzinfo=tzoffset(None, -18000))

parse()功能非常强大,能够处理各种日期格式:

>>> parse("Friday January 6, 2017 11:12 AM")
datetime.datetime(2017, 1, 6, 11, 12)

这是3.6.0,dateutil 2.6.0。