python - 如何在 Python 3 的 dateutil 解析器中解析超过 24 小时的日期?

标签 python parsing datetime 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

此时time2是一个由[2, 8, 42, 12]组成的列表,相当于2天8小时42分12秒。我将如何以允许 Python 解析它的方式将其转换为以天、小时、分钟和秒为单位的 Python 日期时间表示形式?请注意,我最终将对这些代表等待时间的时间值进行无监督聚类。

最佳答案

你没有一个日期,你有一个持续时间。这可能与日期和时间戳有关,但前提是涉及相同的时间单位并且显示方式与时间戳类似。

因此,您不能使用 dateutil 来解析此类值。拆分和解析自己很容易:

hours, minutes, seconds = map(int, time1.split(':'))

然后您可以使用 datetime.timedelta() 对象来表示持续时间:

td = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)

这将以天、秒和微秒为单位跟踪增量:

>>> 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)

关于python - 如何在 Python 3 的 dateutil 解析器中解析超过 24 小时的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24432607/

相关文章:

来自 WEBVTT 的 RDF/JSON 的 Javascript 解析器

python - Django)属性错误: 'datetime.date' object when trying to get an object of model

java - SimpleDateFormat 无法正常工作

c# - 获取一个月中的第 x 个最后一个工作日(不是假期)

使用套接字进行 Python 端口转发

python - 如何切片双端队列?

asp.net-mvc - Asp.net MVC 中的 TimeSpan 和 "24:00"解析错误

java - 无法使用 document.getElementById 获取元素,返回 null

python - 从具有不可散列元素的列表中取出唯一值

python - 使用 Seaborn 删除一些 x 标签