タイムスタンプ変換
Unixタイムスタンプを読みやすい日付に変換、またはその逆も。秒とミリ秒対応。
// Get current Unix timestamp (seconds)const timestamp = Math.floor(Date.now() / 1000);// Get current timestamp (milliseconds)const timestampMs = Date.now();// Convert timestamp to Dateconst date = new Date(timestamp * 1000);// Convert Date to timestampconst ts = Math.floor(date.getTime() / 1000);
関連ツール
Unixタイムスタンプとは?
Unixタイムスタンプ(エポック時間やPOSIX時間とも呼ばれる)は、1970年1月1日 00:00:00 UTC(「Unixエポック」として知られる瞬間)から経過した秒数です。
今この瞬間、タイムスタンプは 1705312800 のような数値です。
なぜ1970年1月1日? 1970年代初頭にUnixが開発されていた時、作成者は開始点が必要でした。近くてキリの良い日付を選びました。当時のUnixシステムはあまり遡れなかったのです!
なぜ重要なの?
- タイムスタンプは言語に依存しない - すべてのプログラミング言語が理解できる
- タイムゾーンに依存しない - 常にUTC
- 時間差の比較と計算が簡単
- どこでも使われている:データベース、API、ログファイル、Cookie
タイムスタンプ形式
| 形式 | 単位 | 例 | 一般的な用途 |
|---|---|---|---|
| Unix(秒) | 秒 | 1705312800 | ほとんどのAPI、データベース |
| Unix(ミリ秒) | ミリ秒 | 1705312800000 | JavaScript、Java |
| Unix(マイクロ秒) | マイクロ秒 | 1705312800000000 | 高精度ログ |
クイックチェック: 数字が10桁なら秒、13桁ならミリ秒です。JavaScriptの Date.now() はミリ秒を返します!
記憶に残るタイムスタンプ
🎉 Unixエポックのマイルストーン
| タイムスタンプ | 日付 | イベント |
|---|---|---|
0 | 1970年1月1日 | Unix時間の始まり |
1000000000 | 2001年9月9日 | 最初の10桁タイムスタンプ |
1234567890 | 2009年2月13日 | 世界中で「エポックパーティー」 |
2147483647 | 2038年1月19日 | ⚠️ 2038年問題 |
⚠️ 2038年問題
多くの古いシステムはタイムスタンプを符号付き32ビット整数で保存しており、最大値は 2147483647(2038年1月19日 03:14:07 UTC)です。
この瞬間を過ぎると、これらのシステムは「オーバーフロー」して1901年12月13日だと思ってしまいます!
現代のシステムは64ビット整数を使用しており、2920億年はオーバーフローしません。
タイムスタンプとタイムゾーン
UTCの美しさ
Unixタイムスタンプは常にUTCです。これでタイムゾーンの頭痛が解決します:
タイムスタンプ: 1705312800
= 2024年1月15日 10:00:00 UTC
= 2024年1月15日 19:00:00 JST(東京)
= 2024年1月15日 05:00:00 EST(ニューヨーク)
= 2024年1月15日 11:00:00 CET(ベルリン)
同じ数字、異なるローカル時間。タイムスタンプを扱う時:
- すべてをUTCタイムスタンプとして保存
- 表示時のみローカル時間に変換
- ユーザー入力はそのタイムゾーンで受け取り、すぐにUTCに変換
よくある間違い: タイムスタンプがローカルタイムゾーンだと思い込むこと。そうではありません - 常にUTCです!
実用的な変換のヒント
クイック計算
- 1日 = 86,400秒
- 1週間 = 604,800秒
- 1ヶ月 ≈ 2,592,000秒(30日)
- 1年 ≈ 31,536,000秒
一般的な操作:
// 現在のタイムスタンプ
Math.floor(Date.now() / 1000)
// 1日追加
timestamp + 86400
// 1週間引く
timestamp - 604800
タイムスタンプの豆知識
📅 負のタイムスタンプ 1970年より前の日付は負の数で表されます:
-1= 1969年12月31日 23:59:59 UTC-86400= 1969年12月31日 00:00:00 UTC
🎂 あなたの誕生日をUnix時間で
1990年3月15日生まれ?あなたのタイムスタンプは約 637,632,000 です!