UNIXタイムスタンプ変換 — 秒とミリ秒を取り違えないために
1758153600 のような数字を日時に、日時を数字に変換します。秒・ミリ秒・マイクロ秒を選べて、自動判別もできます。タイムゾーンを切り替えれば、同じ瞬間が各地で何時なのかを並べて確認できます。
UNIXタイムスタンプは、1970年1月1日0時0分0秒(協定世界時)からの経過時間です。世界のどこで数えても同じ値になるので、ログやデータベース、APIの日時はほとんどこの形で保存されています。
扱いで最もつまずくのが単位です。10桁なら秒、13桁ならミリ秒、16桁ならマイクロ秒。取り違えると1970年になったり、遠い未来になったりします。自動判別は桁数から判断しますが、はっきりしている場合は単位を指定してください。
桁数と単位
| 例 | 桁数 | 単位 | 表す日時 |
|---|---|---|---|
| 1758153600 | 10桁 | 秒 | 2025年9月18日 |
| 1758153600000 | 13桁 | ミリ秒 | 同じ日時 |
| 1758153600000000 | 16桁 | マイクロ秒 | 同じ日時 |
| 1758153600 | 秒として読むべき値をミリ秒と解釈 | — | 1970年1月21日になってしまう |
タイムゾーンで見え方が変わります
タイムスタンプ自体に時差はありません。同じ数字が、東京では9時、ロンドンでは0時、ニューヨークでは前日の19時を指します。ログの時刻が1日ずれて見えるときは、たいてい表示しているタイムゾーンが違うだけです。
日付だけを比べる作業では、この差が実害になります。日本時間の午前8時に起きた出来事は、協定世界時ではまだ前日です。日次の集計をどのタイムゾーンで区切るかを決めておかないと、件数が合いません。
このツールは複数のタイムゾーンを切り替えられます。日時から数字を作るときも、入力した日時をどのタイムゾーンの時刻として扱うかを選べます。
2038年問題
タイムスタンプを32ビットの符号付き整数で持っているシステムは、2038年1月19日を過ぎると桁があふれて負の数になります。1901年に飛ぶ、いわゆる2038年問題です。
最近の言語と環境は64ビットで扱うので問題になりません。ただし古い組み込み機器や、長年動いているシステムのデータ形式には残っていることがあります。遠い将来の日付を保存する場合は、扱える範囲を確認してください。
逆方向の限界もあります。1970年より前は負の数で表せますが、対応していない実装もあるため、過去の日付を扱うときは日付文字列のほうが安全です。
使うときのこつ
- •数字を貼り付けると、その瞬間が「何日前」「何時間後」なのかも一緒に表示されます。ログを追うときに便利です。
- •数字以外が混じった入力は受け付けません。桁を途中で切り取ってしまう事故を防ぐためです。
- •現在時刻のボタンで今の値をすぐ取り出せます。
- •入力した値は保存されません。変換はすべてブラウザの中だけで行われます。
よくある質問
1970年と表示されるのですが。
ミリ秒の値を秒として読んでいる可能性があります。単位を切り替えてみてください。桁数が13桁ならミリ秒です。
うるう秒は反映されますか?
されません。UNIXタイムスタンプはうるう秒を数えない決まりになっています。
日時から数字を作れますか?
できます。入力した日時をどのタイムゾーンの時刻として扱うかも選べます。
1970年より前の日付は?
負の数で表せますが、受け取る側が対応していないことがあります。過去の日付は日付文字列で扱うほうが安全です。
