私はdatetime.time文字列をpythonの総マイクロ秒に等しい整数に変換しようとしています。epochからμに時間文字列を格納
# my input
>>> mark_raw = '00:01:00.420000' # 0 hr, 1 min, 0 sec, 42 ms
# my desired output
>>> mark_time
60420000
私の現在の計画では、エポック
# 0 hr, 1 min, 0 sec, 42 ms
>>> mark_raw = '00:01:00.420000'
>>> mark_dt = datetime.strptime(mark_raw, '%H:%M:%S.%f')
>>> mark_dt
datetime.datetime(1900, 1, 1, 0, 1, 0, 420000)
>>> mark_date = mark_dt.date()
>>> mark_date
datetime.date(1900, 1, 1)
>>> dt_epoch = calendar.timegm(mark_dt.timetuple()) * 1000
>>> dt_epoch
-2208988740000
>>> date_epoch = calendar.timegm(mark_date.timetuple()) * 1000
>>> date_epoch
-2208988800000
>>> mark_time = dt_epoch - date_epoch
>>> mark_time
60000
ないのはなぜ私は60000
マイクロ秒を取得していてください以来のエポックからの日時、および日付の違いを見つけます。たぶん丸め問題?私はdatetime.date(1900, 1, 1)
がdatetime.date(1900, 1, 1, 0, 0, 0, 0)
と等しいと仮定していますが、多分それはそうではありません。
唯一の要件は、マイクロ秒に元の時間文字列を取得することです。これは他の戦略にも役立ちます。