Epochから人間が読める日付への変換
Unix epoch timestampを人間が読める日付に変換する方法。JavaScript、Python、Java、Go、SQL、コマンドラインのコード例付きクイックリファレンス。
Conversion
1704067200 → 2024-01-01
詳細な説明
Unix epoch timestampを人間が読める日付に変換することは、プログラミングにおいて最も頻繁に行われる操作の一つです。1970年1月1日UTCからの秒数(またはミリ秒数)を、年、月、日、時、分、秒の表現に変換する処理です。
主要言語での変換例:
// JavaScript (入力:ミリ秒)
new Date(1704067200 * 1000).toISOString()
// "2024-01-01T00:00:00.000Z"
new Date(1704067200 * 1000).toLocaleString("en-US", {
timeZone: "America/New_York"
})
// "12/31/2023, 7:00:00 PM"
# Python
from datetime import datetime, timezone
datetime.fromtimestamp(1704067200, tz=timezone.utc)
# datetime(2024, 1, 1, 0, 0, tzinfo=timezone.utc)
// Java
Instant.ofEpochSecond(1704067200L)
.atZone(ZoneId.of("UTC"))
.format(DateTimeFormatter.ISO_DATE_TIME)
// "2024-01-01T00:00:00Z"
// Go
time.Unix(1704067200, 0).UTC().Format(time.RFC3339)
// "2024-01-01T00:00:00Z"
-- MySQL
SELECT FROM_UNIXTIME(1704067200); -- '2024-01-01 00:00:00'
-- PostgreSQL
SELECT to_timestamp(1704067200); -- '2024-01-01 00:00:00+00'
# Linux/macOS
date -d @1704067200 # Linux
date -r 1704067200 # macOS
重要な考慮事項:
入力のtimestampが秒かミリ秒かを常に把握してください。JavaScriptのDateコンストラクタはミリ秒を期待するため、秒を1000倍する必要があります。これを間違えると、期待する日付ではなく1970年1月の日付が生成されます。
出力時のタイムゾーンの重要性: 同じtimestampでも、適用するタイムゾーンによって異なる読みやすい日付になります。1704067200はUTCでは2024年1月1日午前0時ですが、ニューヨークでは2023年12月31日午後7時です。フォーマット呼び出しでは常に希望するタイムゾーンを明示的に指定してください。
バッチ変換: 多数のtimestampを変換する場合(ログファイルの処理など)、ループの外でフォーマッターやタイムゾーンオブジェクトを一度だけ作成してください。言語によって10〜100倍高速になります。
ユースケース
ログ分析ツールは、サーバーログのepoch timestampを分析者のローカルタイムゾーンの人間が読める日付に変換し、本番環境の問題のデバッグを実用的にする必要があります。