Unixタイムスタンプの基礎知識と活用法
Unixタイムスタンプは1970年1月1日0時0分0秒(UTC)からの経過秒数で時刻を表す方式です。OSやデータベース・API・ログファイルなど、システム開発の至る所で使われています。
Unixタイムスタンプとは
Unixタイムスタンプ(Unix epoch)は1970/01/01 00:00:00 UTC を起点とした秒数です。例えば1700000000は2023年11月14日を表します。ミリ秒タイムスタンプはJavaScriptのDate.now()が返す値で、秒タイムスタンプの1000倍です。両者の混同によるバグはよくある落とし穴なので、値の桁数(10桁=秒、13桁=ミリ秒)で判断する習慣をつけましょう。
タイムゾーンの扱いに注意
Unixタイムスタンプ自体はタイムゾーン非依存(UTC基準)ですが、日時文字列に変換する際はタイムゾーンの考慮が必要です。JSTはUTC+9なので、Unixタイムスタンプ0は日本時間の1970年1月1日9時0分0秒になります。Timestamp Converterでは東京・UTC・NYなど15のタイムゾーンを選択して正確な変換を確認できます。JavaScriptのnew Date().toLocaleString()はブラウザのローカルタイムゾーンを使うため、サーバーとクライアントで異なる日時が表示される問題がよく起きます。dayjs・date-fnsなどのライブラリでタイムゾーンを明示的に指定することで一貫した日時処理が実現できます。Intl.DateTimeFormat APIを使えばライブラリなしでタイムゾーン付きのフォーマットが可能です。
ISO 8601形式とは
ISO 8601は国際標準の日時表記形式で、「2024-01-15T09:00:00+09:00」のように書きます。APIのリクエスト・レスポンスやJSON、ログファイルで広く使われています。Timestamp ConverterではISO 8601形式での出力もワンクリックでコピーできます。末尾のZはUTCを意味するZulu時間(例: 2024-01-15T00:00:00Z)で、タイムゾーンオフセットなしのUTC表記です。日付のみ(2024-01-15)・週番号表記(2024-W03-1)・時刻のみ(T09:00:00)などのバリエーションもISO 8601に含まれます。JavaScriptのDate.toISOString()はUTCのISO 8601文字列を返すため、JST環境でも常にUTCで出力される点に注意が必要です。ログやデータベースのタイムスタンプにISO 8601を使うと国際化対応がしやすくなります。
クイックオフセットの活用
有効期限やスケジュールの計算では「現在時刻+30日後」のようなタイムスタンプが必要になります。Timestamp Converterのクイックオフセット(Now +1h/+24h/+7d/+30d/+1y)を使えば、現在時刻からの相対タイムスタンプを即座に取得できます。トークンの有効期限設定やcronのスケジュール確認に役立ちます。JWTのexpクレームに設定する「現在時刻+1時間のUnixタイムスタンプ」、キャッシュの有効期限を「現在+24時間のミリ秒タイムスタンプ」で設定する場面、パスワードリセットリンクの「48時間後失効」などの実装でよく使います。Date.now() + 30 * 24 * 60 * 60 * 1000のような計算式も、クイックオフセットで得た結果と比較して実装を検証できます。