python - 将不同的时间格式转换为相同的格式并找出2次之间的差异
问题描述
希望你们都做得很好。
我一直在解决这个特殊的问题,即找到 2 次之间的时间差(所有不同的格式)。对于某些情况,我已经部分解决了它,但目前无法理解如何为所有情况创建解决方案。
我的逐步过程包括:
将所有数据(最初为字符串格式)转换为日期时间格式
查找以字符串格式以不同方式表示时间以正确转换为日期时间格式而不丢失 PM 准确性的情况仍然是 PM,如果它是“4”而不是 4PM 或 16:00,则不会转换为 AM
然后......计算2次之间的差异(一次以日期时间格式)
一些细节包括查找以下时间的时差(最初和本示例中存储为字符串):
- 16-19
- 19.30-20.00
- 下午 5 点至下午 6 点
- 4-5
- 5-5.10PM
- 16 - 18(是的,数字和连字符之间的空格是故意的,尽管一些字符串操作应该很简单地解决这个问题)
- 12 - 14
我设法将 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,则运行一些其他代码(其他示例也是如此)。
抱歉,如果我的解释有点过头了……我正处于一起破解解决方案并尝试所有不同组合的顶空。
感谢您对此的任何指导!
祝你有美好的一天。
解决方案
好吧,错误非常明确:您尝试使用与 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)
它真的很强大,可以处理很多小细节,比如空格等;)
推荐阅读
- css - CSS文本并排相同高度
- python - ModuleNotFoundError:没有名为“tensorflow.examples”的模块
- entity-framework - 在 FromSql Entity Framework Core 方法中使用 Inner Join
- javascript - ES6 导入导出不起作用
- html - Ionic 3 / angular ngForm不发送数据
- c - 两个整数符号相同
- java - Hibernate Eclipse Oxygen:无法加载 AnnotationConfiguration
- node.js - 错误:找不到模块“快速会话”
- c++ - 使用“findHomography”和“warpPerspective”时的旋转图像
- android - 错误的第一个参数类型错误