我想用Python的datetime將一個毫秒數轉換成一個格式化的字串。
def milliseconds_to_str(t) 。
""將毫秒數轉換為HH:MM:SS,ms時間""。
return str(datetime.timedelta(miliseconds=t))。 replace('.', ',') [:-3]
上述方法效果非常好,例如:
> milliseconds_to_str(8712313) 。'2:25:12,313'。
當毫秒數是1000的偶數倍時,問題就出現了,例如:
milliseconds_to_srt_time(1000) > 0。 00 (應該是0:00: 01,000)
milliseconds_to_srt_time(1000000) > 0:16 (應該是0。 16:00,000)
milliseconds_to_srt_time(4000400) > 1:06:40,400 (GOOD)
milliseconds_to_srt_time(80808231) > 22:26:48,231 (GOOD)
milliseconds_to_srt_time(80808000) > 22: 26 (應該是22:26:00,000)
我怎樣才能避免這種四舍五入的情況?
uj5u.com熱心網友回復:
使用固定的切分[:-3]是行不通的,因為產生的毫秒字串是不同的。
2: 25: 12.313000
0: 00: 01
在這里,它將只適用于第一個(最后的000將被修剪,導致2:25:12.313),但不應該應用于第二個(因為這將洗掉:01,導致0:00)。
相反,我們可以先附加一個".000",然后將毫秒部分(在點.之后)修剪成前3個字符[:3]。
import datetime
def milliseconds_to_srt_time(t)。
""將毫秒數轉換為HH:MM:SS,ms時間""
time_str = str(datetime.timedelta( milliseconds=t)) ".000"/span>
time_str_split = time_str.split("。", maxsplit=1)
return f"{time_str_split[0]}。 {time_str_split[1] [: 3]}"
print( milliseconds_to_srt_time(8712313)
print( milliseconds_to_srt_time(1000)
print( milliseconds_to_srt_time(1000000)
print( milliseconds_to_srt_time(4000400)
print( milliseconds_to_srt_time(80808231)
print( milliseconds_to_srt_time(80808000)
輸出
2:25:12,313.
0:00:01,000
0:16:40,000。
1:06:40,400。
22:26:48,231。
22:26:48,000。
uj5u.com熱心網友回復:
這是另一個實施的例子,雖然非常相似。
你可以在這里找到其他有用的資訊。格式化定時器到字串
import datetime
def milliseconds_to_str(t)。
""將毫秒數轉換為HH:MM:SS,ms時間""。
d = str(datetime.timedelta(milliseconds=t)).split("。")
out = ":".join(["d" % (int(float(x)) for x in d[0].split(' :')])
return out " 。 " ("%d" % (int(d[1])/1000) if len(d)==2 else "000" /span>)
print( milliseconds_to_str(8712313)
print( milliseconds_to_str(1000)
print( milliseconds_to_str(1000000)
print( milliseconds_to_str(4000400)
print( milliseconds_to_str(80808231)
print( milliseconds_to_str(80808000)
輸出與Niel給出的相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321108.html
標籤:
上一篇:緩沖影像在運行時是空的
