Bra*_*man 2 python datetime parsing python-3.x
我目前在一个类似"27:32:18"的专栏中有很多次,这意味着有人在等待27小时,32分钟和18秒.每当我尝试解析这些值时,我一直得到"ValueError:小时必须在0..23".
我该如何解析这些值或将它们转换为更标准的格式?我尝试了以下作为单个值的测试:
time1 = "56:42:12"
time2 = time1.split(':')
time2 = [int(n) for n in time2]
time2.insert(0, time2[0] // 24)
time2[1] %= 24
Run Code Online (Sandbox Code Playgroud)
此时,time2是由[2,8,22,12]组成的列表,相当于2天,8小时,42分钟和12秒.我将如何以一种允许Python解析它的方式将其转换为日期,小时,分钟和秒的Python日期时间表示?请注意,我最终将对这些表示等待时间的时间值进行无监督聚类.
Mar*_*ers 10
你不会有一个日期,你有一个持续时间.这可能与日期和时间戳有关,但仅涉及相同的时间单位,并且与时间戳类似地显示.
因此,您不能dateutil用于解析此类值.分解和解析自己很容易:
hours, minutes, seconds = map(int, time1.split(':'))
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用datetime.timedelta()对象来表示持续时间:
td = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
Run Code Online (Sandbox Code Playgroud)
然后,这将以天,秒和微秒的形式跟踪增量:
>>> import datetime
>>> time1 = "56:42:12"
>>> hours, minutes, seconds = map(int, time1.split(':'))
>>> datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
datetime.timedelta(2, 31332)
Run Code Online (Sandbox Code Playgroud)