timestamp 2025-03-15
プログラミングにおけるUnixタイムスタンプと日付処理
Unixタイムスタンプ、タイムゾーン処理、日付パーシング、ソフトウェアでよくある日付関連のバグについて。
時間処理はプログラミングで最も複雑な領域の一つです。Unixタイムスタンプは時間を表現する普遍的な方法を提供しますが、注意すべき落とし穴が多くあります。
Unixタイムスタンプとは?
Unixタイムスタンプは1970年1月1日00:00:00 UTC(Unixエポック)からの経過秒数です。
秒 vs ミリ秒
10桁なら秒、13桁ならミリ秒です。
2038年問題
32ビットシステムはUnixタイムスタンプを符号付き32ビット整数で保存します。2038年1月19日以降オーバーフローが発生します。
解決策:64ビットタイムスタンプを使用。
タイムゾーン処理
よくある間違い
1. サーバータイムゾーンの仮定:常にUTCで保存
2. DSTバグ:1時間が繰り返されるかスキップされる可能性
3. タイムゾーン名の曖昧さ:IANAタイムゾーン識別子を使用
ベストプラクティス
- すべてのタイムスタンプをUTCで保存
- 表示時のみローカル時間に変換
- ISO 8601形式を使用
- IANAタイムゾーン識別子を使用
よくある日付バグ
1. 月のオフバイワン:JavaScriptの月は0始まり
2. うるう年の問題
3. 日付の比較:常にタイムスタンプで比較
タイムスタンプ変換ツールでUnixタイムスタンプを即座に変換できます。