1

「12:30」や「5:51:23」などの文字列をPythonで経過時間を表す10進数に変換するにはどうすればよいですか?

4

3 に答える 3

2

かなり単純な文字列分割と計算:

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)

のように数値を 1 つだけ指定すると"3"、 が返され3.0ます。のようにコロンで区切られた 2 つの値を指定すると"4:57"、 が返され4.95ます。のようにコロンで区切られた 3 つの値を指定すると"14:36:27"、 が返され14.6075ます。

于 2013-03-04T18:32:29.730 に答える
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
于 2013-03-04T18:57:59.933 に答える
0
>>> float('5:51:23'.split(':')[0])
5.0
于 2013-03-04T18:47:44.497 に答える