よくある質問
Unixタイムスタンプとは?
Unixタイムスタンプ(エポックタイムまたはPOSIX時間とも呼ばれる)は、1970年1月1日00:00:00 UTC(Unixエポック)からの経過秒数を表す時間計測システムです。タイムゾーンに依存しない普遍的な形式で日時を表現するため、コンピューティングで広く使用されています。
なぜUnix時間は1970年から始まるのですか?
1970年1月1日を起点としたのは、ベル研究所の初期Unix開発者たちによる選択です。当時は32ビット整数が一般的で、1970年から始めることで2038年までの日付を表現できました。
秒とミリ秒のタイムスタンプの違いは?
Unixタイムスタンプは従来、秒単位(10桁、例:1701792000)で表されます。しかし、多くの現代のシステム、特にJavaScriptでは、より高い精度のためにミリ秒(13桁、例:1701792000000)を使用します。
2038年問題(Y2K38)とは?
2038年問題は、多くの古いシステムがUnixタイムスタンプを32ビット符号付き整数として保存しているために発生します。この形式では2038年1月19日03:14:07 UTCまでしか表現できません。現代の64ビットシステムではこの問題は解決されています。
様々なプログラミング言語で現在のUnixタイムスタンプを取得する方法
様々なプログラミング言語で現在のUnixタイムスタンプを取得する例:
// JavaScript
Math.floor(Date.now() / 1000)
# Python
import time
int(time.time())
// Java
System.currentTimeMillis() / 1000
// PHP
time()
// Go
time.Now().Unix()
// C#
DateTimeOffset.UtcNow.ToUnixTimeSeconds()Unixタイムスタンプを読みやすい日付に変換する方法
Unixタイムスタンプを人間が読める日付に変換するには、タイムスタンプに1000を掛けて(秒の場合)Dateオブジェクトを作成します。JavaScriptでは:new Date(timestamp * 1000).toISOString()。Pythonでは:datetime.fromtimestamp(timestamp)。
// JavaScript
new Date(1704067200 * 1000).toISOString()
// Result: '2024-01-01T00:00:00.000Z'
# Python
from datetime import datetime
datetime.fromtimestamp(1704067200)
// PHP
date('Y-m-d H:i:s', 1704067200)タイムゾーンはUnixタイムスタンプにどう影響しますか?
Unixタイムスタンプは常にUTC(協定世界時)に基づいており、タイムゾーンに依存しません。タイムスタンプを人間が読める日付として表示する際に、適切なタイムゾーンオフセットを適用する必要があります。
Unixタイムスタンプの一般的な使用例は?
Unixタイムスタンプは、データベースレコードのタイムスタンプ、APIリクエスト/レスポンスのタイミング、ログファイルエントリ、Cookieの有効期限、キャッシュの無効化、ファイル更新日時、セッション管理など、普遍的でソート可能な時間形式が必要なあらゆるシナリオで広く使用されています。