Python のタイムスタンプ
タイムゾーンの罠なしの datetime と Unix 時刻。第一則:素の fromtimestamp() は現地時刻を返します。
試す — スタンプを貼り付け
—
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 を付けてください。
よくある質問
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 側だけに。
他ツールとの比較
| 機能 | Epoch(当サイト) | EpochConverter |
|---|---|---|
| タイムゾーンの罠付き Python 完全解説 | はい | スニペットのみ |
| コピペ可能な aware datetime パターン | はい | はい |
| ページ上のライブデモ | はい | いいえ |
| JS・Go との ms/µs/ns 相互運用 | はい | 部分的 |
| 無料・登録不要 | はい | はい |
2026年10月時点の epochconverter.com との比較です。変更があれば修正します。
関連ツール
その他のツール
相互検証のための独立した代替ツールです。掲載は推奨を意味しません。誤りがあればご連絡ください。