ブログに戻る
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タイムスタンプを即座に変換できます。