UNIXタイムスタンプとは?
UNIXタイムスタンプは、1970年1月1日00:00:00 UTC(協定世界時)からの経過秒数を表します。これはコンピュータシステムで広く使用されている時間表現方法です。
注意事項:
- タイムスタンプはUTC(協定世界時)を基準としています。
- 表示される日時はお使いのブラウザのタイムゾーン設定に基づいています。
- 2038年1月19日03:14:07 UTCを超えるタイムスタンプは、32ビットシステムでは正確に表現できない場合があります(2038年問題)。
よく使われるタイムスタンプと日付の変換例
UNIXタイムスタンプ(秒) | 日付(日本時間) | 説明 |
---|---|---|
0 | 1970年1月1日 09:00:00 | UNIXエポック(基準時点) |
1000000000 | 2001年9月9日 10:46:40 | 10億秒の節目 |
1234567890 | 2009年2月14日 08:31:30 | 連続する数字のタイムスタンプ |
1500000000 | 2017年7月14日 19:40:00 | 15億秒の節目 |
1577836800 | 2020年1月1日 09:00:00 | 2020年の始まり |
1609459200 | 2021年1月1日 09:00:00 | 2021年の始まり |
1640995200 | 2022年1月1日 09:00:00 | 2022年の始まり |
1672531200 | 2023年1月1日 09:00:00 | 2023年の始まり |
1704067200 | 2024年1月1日 09:00:00 | 2024年の始まり |
2147483647 | 2038年1月19日 12:14:07 | 32ビット符号付き整数の最大値(2038年問題) |
タイムスタンプと日付の変換方法
UNIXタイムスタンプは、1970年1月1日 00:00:00 UTC(協定世界時)からの経過秒数を表します。この時間表現方法は、コンピュータシステムやデータベースで広く使用されています。
タイムスタンプから日付への変換
UNIXタイムスタンプから日付に変換するには、以下の手順で計算します:
- タイムスタンプに1000を掛けてミリ秒に変換します(JavaScriptのDate関数用)
- その値を使用してDate型のオブジェクトを作成します
- 必要に応じて、日付関数を使用して年、月、日などの値を取得します
日付からタイムスタンプへの変換
逆に、日付からUNIXタイムスタンプに変換するには、以下の手順で計算します:
- 指定された日付と時刻でDateオブジェクトを作成します
- getTime()メソッドを使用してミリ秒単位のタイムスタンプを取得します
- 1000で割って秒単位のUNIXタイムスタンプに変換します
タイムゾーンの考慮
UNIXタイムスタンプはUTC(協定世界時)を基準としています。日本時間(JST)はUTCより9時間進んでいるため、日本時間の日付をタイムスタンプに変換する際や、タイムスタンプを日本時間で表示する際には、このタイムゾーンの違いを考慮する必要があります。
JavaScriptのDateオブジェクトはブラウザのローカルタイムゾーン設定に基づいて動作するため、日本のブラウザでは自動的に日本時間で表示されます。しかし、サーバーサイドのプログラムやタイムゾーンが異なる環境では、明示的にタイムゾーンを指定する必要がある場合があります。
データベースでのタイムスタンプ変換
多くのデータベースシステムでは、タイムスタンプと日付形式の間で変換するための関数が提供されています:
SQLでの変換例:
Snowflakeでのタイムスタンプ変換
Snowflakeデータベースでは、TO_DATE関数とTO_TIMESTAMP関数を使用してタイムスタンプと日付の変換を行うことができます:
タイムスタンプの活用場面
タイムスタンプは以下のような場面で活用されています:
- データベースでのレコード作成・更新時刻の記録
- ログファイルのイベント時刻記録
- セッション管理やトークンの有効期限設定
- 異なるタイムゾーンにまたがるシステム間での時刻の一貫した表現
- 時系列データの保存と分析
タイムスタンプは単なる整数値であるため、日付の比較や計算が容易であり、ストレージ効率も良いというメリットがあります。特にグローバルに展開されるシステムやサービスでは、タイムゾーンの違いによる混乱を避けるために、内部的にはタイムスタンプで時刻を管理し、表示時に各ユーザーのローカルタイムゾーンに変換するという方法がよく採用されています。