我正在解析该程序的日志,而无法访问该程序的源代码。
日志在日志记录中包含有趣的事件时间戳–
2018-11-02T06:25:03870000Z
。在我看来,这很奇怪,我不知道它的正确性。但是我倾向于认为03974200Z
描述了秒(%s
)的一部分,我希望尽可能多地从该记录中收集信息。
我试图像这样从Python 3.7解析此示例:
d = '2018-11-02T06:25:03870000Z'
dt.datetime.strptime(d, '%Y-%m-%dT%H:%M:%S')
它会产生可预测的错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/_strptime.py", line 577, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/_strptime.py", line 362, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 870000Z
更新: 我对此有肮脏的解决方案,但是如果有比此更好的方法来进行这种操作:
sc = d.split(':')[-1][:2]
dd = d.split(':')
en = ':'.join(dd[:-1])
en += ':' + sc
>> en
'2018-11-02T06:25:03'
问题:
03
在几秒钟内)?答案 0 :(得分:1)
Z指定Zulu时区(UTC或GMT),秒以整秒(03)表示,后跟微秒(870000),因此您可以使用以下方法完全解析日期:
d = '2018-11-02T06:25:03870000Z'
dt.datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%fZ')
答案 1 :(得分:-1)
我会用
import re
d = '2018-11-02T06:25:03870000Z'
date = re.findall('\d+', d)
这将为您提供连续出现一个或多个数字的所有事件的列表,现在您可以根据需要进行操作,例如
print("Y: %s, M: %s, D: %s, H: %s, m: %s, S: %s" %(tuple(date)))
当然,您还可以四舍五入以使它们只有两位数字