タイムスタンプとは
タイムスタンプは、ある瞬間を表す数値です。最もよく使われるのはUnixタイムスタンプ—1970年1月1日00:00:00 UTCからの経過秒数(またはミリ秒数)です。例えば1720780800は2024-07-12 12:00:00 UTCに対応します。タイムスタンプはプログラミング、ログ、データベース、APIの至る所に存在します。
変換が必要な理由
- ログを読む:ログはタイムスタンプだらけで目で読めないため、可読な時刻に変える
- APIのデバッグ:APIがタイムスタンプを返すとき、正しいか確認する
- タイムゾーン越え:UTCのタイムスタンプをローカル時刻に変えて表示する
- データベース:保存されているのはタイムスタンプだが、表示時には書式化が必要
よくある時刻フォーマット
Unixタイムスタンプ
- 秒単位:10桁の数字(例:1720780800)
- ミリ秒単位:13桁の数字(例:1720780800000、JS/Javaでよく使われる)
ISO 8601
2024-07-12T12:00:00Zのような国際標準フォーマットで、APIでよく使われます。末尾のZはUTCを示します。
ローカル時刻
2024-07-12 20:00:00のようにタイムゾーンオフセットを伴い、地域によって異なります。
DocsAll タイムスタンプ変換ツール
タイムスタンプ変換ツールでワンクリック相互変換:
- タイムスタンプツールを開く
- タイムスタンプを入力すると可読な時刻を自動表示、または時刻を入力するとタイムスタンプを取得
- 秒/ミリ秒の切り替えに対応
- 結果をコピー
変換例
| タイムスタンプ(秒) | UTC時刻 | 北京時間(UTC+8) |
|---|---|---|
| 0 | 1970-01-01 00:00 | 1970-01-01 08:00 |
| 1720780800 | 2024-07-12 12:00 | 2024-07-12 20:00 |
よくある落とし穴
秒とミリ秒
JSのDate.now()はミリ秒(13桁)を返しますが、Pythonのtime.time()は秒(10桁)を返します。混用すると1000倍の差が出るため、変換前に単位を確認してください。
タイムゾーン
同じタイムスタンプでもタイムゾーンによって表示が異なります。北京時間はUTCより8時間早く、1720780800はUTCでは正午12時、北京では午後8時です。バックエンドはUTCで保存し、フロントエンドはユーザーのタイムゾーンに合わせて表示するのが一般的です。
2038年問題
32ビットのUnixタイムスタンプは2038-01-19にオーバーフローします。現代のシステムはほとんど64ビットであり影響を受けませんが、古い組み込みシステムでは注意が必要です。
負のタイムスタンプ
1970年より前の時刻は負の数で表されます。対応していないツールもあるため、1969年以前の日付を変換するときは注意してください。
実用のヒント
- バックエンドはUTCタイムスタンプで一元保存し、フロントエンドは必要に応じてローカルタイムゾーンに変換する
- ログ分析時にはツールでタイムスタンプをまとめて可読な時刻に変換すると、暗算より百倍速い
- APIのデバッグ時には、返されるのが秒かミリ秒かを先に確認する
タイムスタンプ変換は開発者の日常で頻度の高い作業です。ツールをブックマークしておけば、必要なときにすぐ開けます。