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

Python 将时间字符串转换为十进制小时数?,python,Python,如何将12:30或5:51:23这样的字符串转换为表示Python中已用小时数的十进制数?相当简单的字符串拆分和数学: 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

如何将12:30或5:51:23这样的字符串转换为表示Python中已用小时数的十进制数?

相当简单的字符串拆分和数学:

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

非常简单的字符串拆分和数学:

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

可能的解决方案

>>> 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
可能的解决办法

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

从OP的自我回答来看,我猜这还不够。也许,最终他会决定答案是否是他想要的。在这种情况下,我严格遵循要求和答案。从OP的自我回答来看,我猜这是不够的。也许,最终他会决定答案是否是他想要的。在这种情况下,我严格遵守要求。将HMS更改为[1,1.0/60,1.0/3600],12月时间将以小时为单位。可能不需要除以3600。将HMS更改为[1,1.0/60,1.0/3600],十二月时间将以小时为单位。可能不需要除以3600。当前问题和标记为重复的问题解决了不同的问题。针对重复问题发布的解决方案没有解决不完整的时间字符串,例如12:30。投票重新讨论当前问题和标记为重复的问题解决了不同的问题。针对重复问题发布的解决方案没有解决不完整的时间字符串,例如12:30。投票重开