首页 > 解决方案 > 将不同的时间格式转换为相同的格式并找出2次之间的差异

问题描述

希望你们都做得很好。

我一直在解决这个特殊的问题,即找到 2 次之间的时间差(所有不同的格式)。对于某些情况,我已经部分解决了它,但目前无法理解如何为所有情况创建解决方案。

我的逐步过程包括:

一些细节包括查找以下时间的时差(最初和本示例中存储为字符串):

我设法将 16-19 转换为:16:00:00 和 19:00:00,但是对于 19.30-20.00 示例,我收到以下错误:ValueError("unconverted data remains: %s" % ValueError: unconverted data remains: .30.

我假设这是由于我的代码实现:

theDate1, theDate2 = datetime.strptime(temp[0: temp.find('-')], "%H"), datetime.strptime(temp[temp.find('-') + 1: len(temp)], "%H")

...其中 19.30-20.00 包括一个 %M 部分而不仅仅是一个 %H 所以代码没有说明如何处理 :30 部分。我打算尝试一个条件部分,如果字符串有 16-19,则运行一些代码,如果字符串有 19.30-20.00,则运行一些其他代码(其他示例也是如此)。

抱歉,如果我的解释有点过头了……我正处于一起破解解决方案并尝试所有不同组合的顶空。

感谢您对此的任何指导!

祝你有美好的一天。

标签: pythonpython-3.xstringdatetime

解决方案


好吧,错误非常明确:您尝试使用与 19 匹配的格式 '%H' 解析 '19.30',因此 '.30' 不匹配。

使用格式 '%H.%M' 代替对我有用;)

另外,看看这个dateutil包,它是为了让解析更容易。例如:

>>> from datetutil.parser import parse
>>> parse('5PM')
datetime.timedelta(seconds=3600)
>>> parse('19h') - parse('17h45')
datetime.timedelta(seconds=4500)
>>> parse('19:00') - parse('18:30')
datetime.timedelta(seconds=1800)

它真的很强大,可以处理很多小细节,比如空格等;)


推荐阅读