我正在尝试将包含时间(“%H:%M:%S.%f”)的字符串转换为等效毫秒的整数。复杂的是,时间是FFmpeg的输出,这是音频文件中的一点。我需要获取字符串表示的时间的毫秒数。 DateTime中的timestamp方法距离epoche数毫秒,从我开始时起没有另一个时间戳,这不好。
例如:t =“ 00:05:52.654321”应转换为:i = 352654321
完成此操作的最佳方法是什么?
这是我想出的方法。
def _convert_string_to_int(self, s) -> int:
begin = datetime.datetime(1900,1,1)
end = datetime.datetime.strptime(s, self._ffmpeg_format_string)
return int((end - begin).total_seconds() * 1000000)
感觉像真的没有必要使用timedelta。
毫秒数本质上是时间interval,因此有充分的理由解释为什么datetime.timedelta
实例具有total_seconds
方法,而datetime.datetime
,datetime.date
和datetime.time
不具有方法。] >
原则上,您可以使用datetime.datetime.time(end)
获得具有包括hour
,minute
,second
和microsecond
的属性的对象,然后使用它们构造自午夜以来经过的时间的算术表达式。同一天。但是,支持这种时间间隔的方法正是您已经使用的timedelta方法。