なぜソフトウェアはカレンダー日付ではなく巨大な数字を使うのか
時刻を構造化された日付オブジェクトではなく単一の整数として保存すると、2つの瞬間の比較、イベントの一覧の並べ替え、経過時間の計算(「この2つのイベントの間に何秒経過したか」など)が、カレンダーを意識した複雑な計算ではなく単純な四則演算で済みます。また、人間が実際にその値を読む必要が生じる瞬間まで、タイムゾーンやカレンダー形式のあいまいさを完全に回避できます。
実際にどこで生のUnixタイムスタンプに出会うか
ログファイル、データベースのレコード、APIのレスポンス、URLのパラメータ、クッキーの有効期限などは、整形された日付文字列ではなく、コンパクトで曖昧さがなく比較しやすいという理由から、生のUnix数値として時刻を保存していることがよくあります。この生の数値を読みやすい形式に変換する作業は、ソフトウェア開発でもっとも日常的な作業のひとつです。
よくある質問
なぜタイムスタンプの値がちょうど1,000倍ずれて見えるのか?
ほとんどの場合、秒とミリ秒の取り違えが原因です。受け取る側のシステムがどちらの形式を想定しているかに応じて、値を1,000倍するか1,000で割るかしてみてください。
タイムゾーンが違うとUnixタイムスタンプの値も変わるのか?
いいえ。同じ瞬間であれば、世界のどこにいても数字そのものは同一です。変わるのは、変換の際にどのタイムゾーンが適用されるかによって表示される、人間が読める日時の文字列だけです。