如何将时分秒毫秒格式的时间字符串转换为毫秒数?
解决时分秒-微秒字符串转毫秒的问题
报错原因
你使用的格式串%H:%M:%S仅匹配到秒级内容,没有覆盖字符串末尾的.750000微秒部分,因此触发ValueError。
两种可行解决方案
方案一:修正datetime格式串,计算时间差
通过%H:%M:%S.%f匹配完整的时间字符串,再计算该时间与当日零点的时间差,最终转换为毫秒:
from datetime import datetime time_str = "00:00:12.750000" # 用%f匹配微秒部分 dt_obj = datetime.strptime(time_str, '%H:%M:%S.%f') # 计算与当日0点的时间差并转毫秒 time_diff = dt_obj - datetime(dt_obj.year, dt_obj.month, dt_obj.day) total_millisec = time_diff.total_seconds() * 1000 print(int(total_millisec)) # 输出12750
方案二:直接拆分字符串计算
如果不需要datetime对象的其他功能,直接拆分字符串计算更高效:
time_str = "00:00:12.750000" # 拆分秒和微秒部分 hms_part, us_part = time_str.split('.') # 拆分时、分、秒 hours, minutes, seconds = map(int, hms_part.split(':')) # 微秒转毫秒(取前三位,750000微秒=750毫秒) milliseconds = int(us_part[:3]) total_millisec = hours * 3600 * 1000 + minutes * 60 * 1000 + seconds * 1000 + milliseconds print(total_millisec) # 输出12750
补充说明
- 方案一适合需要后续对时间做更多操作的场景,比如时区转换、日期运算;
- 方案二更轻量,适合仅需转换毫秒的简单需求。
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

