【问题标题】:Python convert string to timePython将字符串转换为时间
【发布时间】:2020-09-26 12:17:09
【问题描述】:

我有 min:sec.msec 的持续时间数据列表,就像,

t=['10:44.7',...,'36:25.1',..,'59:59.9',..,'00:00.1',...,'18:01.2']

这包括min:sec.msec,但我需要将所有数据格式转换为Hour:min: sec。这意味着数据应该是,

t_converted=['12:10:45',...,'12:36:25',..,'13:00:00',..,'14:00:00',..,'14:18:01']

我该如何使用python?

【问题讨论】:

  • 请阐明如何获取小时值的规则。这还不明显。

标签: python string time time-format


【解决方案1】:

一个简单的时间转换可以用

t_converted = [datetime.strptime(_t, '%M:%S.%f').strftime('%H:%M:%S') for _t in t]

显然要求将所有内容都偏移 12 小时,这使其变得更加复杂 首先,知道何时从 12 到 13 的唯一方法是下一次小于上一次 例如59:59.9, 00:00.1 如果你有 30:30.0 然后 45:00.0 并且它们应该是 12:30:30 和 13:45:00,那么实际上是无法知道的

根据该假设,此代码有效:

from datetime import datetime, timedelta

t=['10:44.7','36:25.1','59:59.9','00:00.1','00:00.0','18:01.2']
t_converted = []
i = 0
prev_dt = None
for _t in t:
    dt = datetime.strptime(_t, '%M:%S.%f') + timedelta(hours=12+i)
    if prev_dt is not None and prev_dt > dt:
        i += 1
        dt += timedelta(hours=1)
    t_converted.append(dt.strftime("%H:%M:%S"))
    prev_dt = dt
print(t_converted)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 2021-06-01
    • 2016-08-13
    • 2012-02-03
    相关资源
    最近更新 更多