我有一个时间戳字符串,如下所示:
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'
如何解析这种格式?
答案 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