Python のタイムスタンプ

タイムゾーンの罠なしの datetime と Unix 時刻。第一則:素の fromtimestamp() は現地時刻を返します。

[MOD.DEMO // TRY]

試す — スタンプを貼り付け

—

Now, in seconds

import time
now_s = int(time.time())  # 10 digits

Now, in milliseconds

now_ms = int(time.time() * 1000)  # for JS interop

Stamp to aware datetime (the correct way)

from datetime import datetime, timezone
dt = datetime.fromtimestamp(ts, tz=timezone.utc)  # always pass tz!

Datetime back to stamp

ts = int(dt.replace(tzinfo=timezone.utc).timestamp())  # naive datetimes read as LOCAL — set tz first

JS milliseconds into Python

dt = datetime.fromtimestamp(ms / 1000, tz=timezone.utc)

タイムゾーンの落とし穴

tz なしの fromtimestamp(ts) はサーバーの現地帯域を使います。上海で +8、ベルリンで +1 のため、地域の異なるログが数時間食い違います。一度だけ直す:常に tz=timezone.utc を渡し、表示のときだけ .astimezone() で変換します。.timestamp() に渡す naive な datetime も現地として読まれるので、先に tzinfo を付けてください。

[DOC.FAQ // INDEX]

よくある質問

05 ITEMS
01 Python で現在の Unix タイムスタンプを取得するには?

秒は int(time.time())、ミリ秒は int(time.time()*1000) です。time.time() は 1970 年 UTC からの float 秒を返すので、int() で切り捨てると他システムが期待する標準エポック値になります。

02 fromtimestamp が数時間ずれるのはなぜ?

素の datetime.fromtimestamp(ts) はスタンプを現地時刻として解釈します。tz=timezone.utc を明示し、表示は .astimezone() で行います。スタンプ自体に帯域はなく、書式化だけが持ちます。

03 JS の Date.now() を Python で変換するには?

先に 1000 で割ります。datetime.fromtimestamp(ms/1000, tz=timezone.utc)。JS は 13 桁ミリ秒、Python は秒を期待します。除算を忘れると 56000 年以上に着地します。

04 datetime をスタンプに戻すには?

aware は int(dt.timestamp())。naive は先に dt.replace(tzinfo=timezone.utc) してください。さもないと .timestamp() が現地として読み、UTC オフセット分ずれます。保存は UTC、表示は現地で。

05 保存は秒とミリ秒のどちら?

サブ秒精度が不要なら秒(10 桁)です。すべてのバックエンドが秒を母語とし、float ミリ秒は JSON で 2^53 を超えると精度を失います。ミリ秒は JS 境界の API 側だけに。

[DOC.COMPARE]

他ツールとの比較

機能Epoch(当サイト)EpochConverter
タイムゾーンの罠付き Python 完全解説 はい スニペットのみ
コピペ可能な aware datetime パターン はい はい
ページ上のライブデモ はい いいえ
JS・Go との ms/µs/ns 相互運用 はい 部分的
無料・登録不要 はい はい

2026年10月時点の epochconverter.com との比較です。変更があれば修正します。

関連ツール

[DOC.LINKS]

その他のツール

相互検証のための独立した代替ツールです。掲載は推奨を意味しません。誤りがあればご連絡ください。