我的时间戳看起来像2015-11-06T14:20:14.011+01:00
。我想把它解析到datetime。
我有一个想法,我可以用%Y-%m-%dT%H:%M:%S.%f%z
作为代表。
但问题是时区的冒号。我如何删除时区中的冒号,或者有更好的方式%z
?
答案 0 :(得分:2)
您拥有ISO 8601日期时间字符串。不要费心解析它或手工摆弄它(参见:XY Problem)。使用iso8601库进行Python。
import iso8601
parsed = iso8601.parse_date("2015-11-06T14:20:14.011+01:00")
如果要从中删除时区信息,请使用replace
方法。
tz_stripped = parsed.replace(tzinfo=None)
答案 1 :(得分:0)
import re
original = '2015-11-06T14:20:14.011+01:00'
replaced = re.sub(r'([+-]\d+):(\d+)$', r'\1\2', original)
# replaced == '2015-11-06T14:20:14.011+0100'
只有当冒号前面加一个加号或减号时才会替换冒号,并用数字包围直到冒号结束。
答案 2 :(得分:0)
我认为最好的方法是使用dateutils https://labix.org/python-dateutil
from dateutil.parser import parse
original = '2015-11-06T14:20:14.011+01:00'
print "Original Date {}".format(original)
new_date = parse(original)
print new_date
print type(new_date)
# print new_date.hour
# print new_date.minute
# print new_date.second
print "New Date 1 {}".format(new_date.strftime('%Y-%m-%d %H:%M:%S'))
print "New Date 2 {}".format(new_date.strftime('%Y-%m-%dT%H:%M:%S.%f%z'))
输出:
Original Date 2015-11-06T14:20:14.011+01:00
2015-11-06 14:20:14.011000+01:00
<type 'datetime.datetime'>
New Date 1 2015-11-06 14:20:14
New Date 2 2015-11-06T14:20:14.011000+0100
此致