UNIXタイムスタンプとUTC
UNIXエポックとは何か、秒とミリ秒の違い、タイムスタンプと現地時間の関係について
UNIXタイムスタンプは、1970-01-01 00:00:00 **UTC** からの経過秒数(またはミリ秒数)を表します。タイムゾーン情報を含まず、同じ数値は全世界で同じ瞬間を指します。現地時間での表示はIANAルールに依存します。ログ、API、データベースで広く使用されています。
秒とミリ秒
- UNIX秒:10桁(例:1700000000)
- JavaScript Date:ミリ秒、13桁
- 混同すると1000倍の誤差が発生(よくあるバグ)
- 2038年問題:64ビットシステムではほぼ解決済み
現地時間との関係
タイムスタンプ→現地時間:ソフトウェアがIANAタイムゾーンを適用。現地時間→タイムスタンプ:タイムゾーンと夏時間を考慮してUTCに変換。UTC基礎と同じ考え方です。UTCログを読む場合は変換で自国時間に変換可能です。
ベストプラクティス
- 保存・転送はUTC/タイムスタンプを使用。表示時のみ現地化
- タイムゾーン情報のない現地時間文字列は絶対に保存しない
- APIドキュメントで秒/ミリ秒を明記
- タイムゾーンルール:ガイドのIANAタイムゾーンデータベースとは