将时间字符串转换为小时的十进制数?

2 投票
3 回答
5082 浏览
提问于 2025-04-17 17:54

我想知道怎么把像“12:30”或者“5:51:23”这样的时间字符串转换成一个小数,表示经过的小时数,使用Python来实现。

3 个回答

0
>>> float('5:51:23'.split(':')[0])
5.0

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

2

可能的解决方案

>>> time_st = ["12:30" , "5:51:23"]
>>> HMS = [60*60, 60, 1]
>>> for t in time_st:
    dec_time = sum(a * b for a,b in zip(HMS, map(int, t.split(":"))))
    dec_time /= 3600.
    print "{} = {}".format(t, dec_time)


12:30 = 12.5
5:51:23 = 5.85638888889
00:00 = 0.0
23:59 = 23.9833333333
3

这是一个比较简单的字符串分割和数学计算的例子:

def time_string_to_decimals(time_string):
    fields = time_string.split(":")
    hours = fields[0] if len(fields) > 0 else 0.0
    minutes = fields[1] if len(fields) > 1 else 0.0
    seconds = fields[2] if len(fields) > 2 else 0.0
    return float(hours) + (float(minutes) / 60.0) + (float(seconds) / pow(60.0, 2)

如果只给了一个数字,比如 "3",那么结果会是 3.0。如果给了两个用冒号分隔的值,比如 "4:57",结果会是 4.95。如果给了三个用冒号分隔的值,比如 "14:36:27",结果会是 14.6075

撰写回答