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

How to remove : after a + or - in python

我有一个看起来像这样的时间戳 2015-11-06T14:20:14.011+01:00。我想将它解析为日期时间。 我的想法是可以使用 %Y-%m-%dT%H:%M:%S.%f%z 作为表示。

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

import re
original = '2015-11-06T14:20:14.011+01:00'
replaced = re.sub(r'([+-]\d+):(\d+)$', r'', original)
# replaced == '2015-11-06T14:20:14.011+0100'

仅当冒号前面有加号或减号,并且被数字包围直到字符串末尾时,它才会替换冒号。

您有一个 ISO 8601 日期时间字符串。不要费心去解析它或手动摆弄它(参见:XY Problem). Use the iso8601 library for Python.

import iso8601
parsed = iso8601.parse_date("2015-11-06T14:20:14.011+01:00")

如果要从中删除时区信息,请使用replace方法。

tz_stripped = parsed.replace(tzinfo=None)

我认为最好的方法是使用 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

此致