我有一个字符串:
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>
非常感谢任何帮助
答案 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。