1. ホーム
  2. パイソン

[解決済み】整数のタイムスタンプをPythonのdatetimeに変換する方法

2022-04-06 18:43:39

質問

1331856000000"のようなタイムスタンプを含むデータファイルがあります。残念ながら、フォーマットのドキュメントがあまりないので、タイムスタンプがどのようにフォーマットされているのかよくわかりません。私はPythonの標準的な datetime.fromordinal()datetime.fromtimestamp() といくつか試してみましたが、何もマッチしません。その特定の数字が現在の日付(例:2012-3-16)に対応していることは間違いないのですが、それ以上のことはわかりません。

この数字をどのように変換すれば datetime ?

解決方法は?

datetime.datetime.fromtimestamp() は正しいですが、タイムスタンプを(JavaScriptのように)ミリ秒単位で持っていることを除いては、しかし fromtimestamp() はUnixのタイムスタンプ(秒)を想定しています。

そんな感じでやってください。

>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)

となり、その結果は

>>> date
datetime.datetime(2012, 3, 16, 1, 0)

質問の答えになっていますか?

EDIT : J.F.セバスチャンの提案で、正しく 真の分割を使用する によって 1e3 (フロート 1000 ). 正確な結果を得たいのであれば、この差は大きいので、答えを変えました。この違いは、Python 2.xのデフォルトの動作に起因しており、常に int を使用した)除算の際に / 演算子) int によって int (これは フロア分割 ). 除数を置き換えることで 1000 (である)。 int )を使って 1e3 の表現である)。 1000 を浮動小数点数で表したもの)、または float(1000) (または 1000. など)、分割は次のようになります。 真の分割 . Python 2.x は float を分割した場合 intfloat , float によって int , float によって float などです。に渡されるタイムスタンプに何らかの端数がある場合、その端数を切り捨てます。 fromtimestamp() メソッドを呼び出すと、このメソッドの結果にもその端数部分の情報 (マイクロ秒数) が含まれます。