Python:将时间戳字符串解析为7位,直到日期时间均为毫秒

时间:2019-04-09 06:24:17

标签: python datetime timestamp strptime

我有一个时间戳字符串,如下所示:

2019-02-16T10:41:20.6080000+01:00

我必须将其解析为datetime。由于微秒数是7而不是6位,因此以下格式不匹配:

timestamp = "2019-03-14T14:37:37.000000+01:00"
parsed_timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f%z") #ValueError: time data '2019-03-14T14:37:37.0000000+01:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

如何解析这种格式?

3 个答案:

答案 0 :(得分:1)

使用dparser

--atomic

输出

--atomic

如果要使用日期部分:

import dateutil.parser as dparser
dt_1 = '2019-02-16T10:41:20.6080000+01:00'
print("Datetime: {}".format(dparser.parse(dt_1,fuzzy=True)))

输出

Datetime: 2019-02-16 10:41:20.608000+01:00

答案 1 :(得分:0)

实际上,您的数据有两件事:您有7位微秒数字,您的时区带有冒号。

我将使用正则表达式解决此问题:

print("Date: {}".format(dparser.parse(dt_1,fuzzy=True).date()))

输出:

Date: 2019-02-16

答案 2 :(得分:0)

看起来您可以使用简单的字符串切片。

例如:

import datetime
timestamp = "2019-02-16T10:41:20.6080000+01:00"
parsed_timestamp = datetime.datetime.strptime(timestamp[:26], "%Y-%m-%dT%H:%M:%S.%f").date() 

print(parsed_timestamp)

输出:

2019-02-16