如何删除:在python中的+或 - 之后

时间:2015-11-06 13:25:24

标签: python string parsing datetime timezone

我的时间戳看起来像2015-11-06T14:20:14.011+01:00。我想把它解析到datetime。 我有一个想法,我可以用%Y-%m-%dT%H:%M:%S.%f%z作为代表。

但问题是时区的冒号。我如何删除时区中的冒号,或者有更好的方式%z

3 个答案:

答案 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

此致