20.12.2016 09:38:42,76
形式の人間が読める時間をミリ秒のUnixタイムスタンプに変換する方法同様の質問をたくさん見つけましたが、この特定の質問/回答は見つかりませんでした。
Python 3では、これは2つのステップで実行できます。
datetime
オブジェクトに変換しますdatetime
オブジェクトのタイムスタンプに1000を掛けて、ミリ秒に変換します。たとえば、次のようなものです。
from datetime import datetime
dt_obj = datetime.strptime('20.12.2016 09:38:42,76',
'%d.%m.%Y %H:%M:%S,%f')
millisec = dt_obj.timestamp() * 1000
print(millisec)
出力:
1482223122760.0
strptime
は、入力としてタイム文字列とフォーマット文字列を受け入れます。 timestring(最初の引数)は、実際にdatetime
オブジェクトに変換するwhatを指定します。フォーマット文字列(2番目の引数)は、渡した文字列の実際のformatを指定します。
公式ドキュメント のフォーマット指定子の説明は次のとおりです。
%d
-ゼロが埋め込まれた10進数としての日付。%m
-ゼロが埋め込まれた10進数としての月。%Y
-10進数として世紀を含む年%H
-ゼロが埋め込まれた10進数としての時間(24時間制)。%M
-ゼロが埋め込まれた10進数としての分。%S
-ゼロが埋め込まれた10進数としての秒。%f
-左側にゼロが埋め込まれた10進数としてのマイクロ秒。Python2.7の場合-ミリ秒を削除しないようにMYGzの回答を変更します。
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s.%f')
d_in_ms = int(float(d)*1000)
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
出力:
1482248322760
2016-12-20 09:38:42.760000
strptime を使用して時間形式を解析する必要があります。
>>> import time
>>> from datetime import datetime
>>> ts, ms = '20.12.2016 09:38:42,76'.split(',')
>>> ts
'20.12.2016 09:38:42'
>>> ms
'76'
>>> dt = datetime.strptime(ts, '%d.%m.%Y %H:%M:%S')
>>> time.mktime(dt.timetuple())*1000 + int(ms)*10
1482223122760.0
Python2.7の場合
秒にフォーマットし、1000を掛けてミリ秒に変換できます。
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s')
d_in_ms = int(d)*1000
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
出力:
1482206922000
2016-12-20 09:38:42
dt_obj
が日付時刻である場合、ミリ秒を解析および失うことなく回答を検索する場合:
python3のみ、エレガント
int(dt_obj.timestamp() * 1000)
python2とpython3の両方の互換性:
import time
int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)