tooliv

タイムスタンプ変換器

Unixタイムスタンプ↔日時変換

タイムスタンプ変換器

なぜUnix時間は1970年から始まるのですか?

Unixオペレーティングシステムが1969-1970年に開発された際、開発者が利便性のために1970年1月1日を基準点として選択しました。当時のコンピュータで扱いやすい値でした。

負のUnixタイムスタンプとは?

1970年1月1日以前の日付を表します。例えば-86400は1969年12月31日を意味します。JavaScriptのDateオブジェクトも負のタイムスタンプを正しく処理できます。

JavaScriptでタイムスタンプを取得するには?

Date.now()でミリ秒タイムスタンプを取得でき、Math.floor(Date.now()/1000)で秒タイムスタンプを得られます。new Date().getTime()もDate.now()と同じ値を返します。

Unixタイムスタンプとは?

Unixタイムスタンプはコンピュータが時刻を保存する普遍的な方法で、1970年1月1日UTC(Unix epoch)からの経過秒数を単純な整数で表します。オペレーティングシステム、データベース、APIで日時を扱う標準的な仕組みです。タイムゾーンに依存しないため、国際的なシステムでも一貫性が保てます。

秒とミリ秒の違い

10桁は秒単位(例: 1700000000)、13桁はミリ秒単位(例: 1700000000000)です。JavaScriptのDate.now()はミリ秒を返し、Unix/Linuxのシステムコールは秒を使用します。APIから受け取る値の桁数を確認して単位を判断しましょう。

タイムスタンプが日付文字列より優れている理由

タイムスタンプは単純な整数なので比較・ソート・差分計算が容易です。日付文字列(YYYY-MM-DDなど)は形式やタイムゾーンの混乱を招きますが、タイムスタンプは常にUTCを基準にした明確な値です。ストレージ効率も高く、データベースのインデックス最適化にも有利です。

タイムゾーンとUTC

Unixタイムスタンプは常にUTC(協定世界時)を基準にしています。日本はUTC+9(JST)なので、表示時に9時間を加算してローカル時刻に変換します。保存はUTCで行い、表示時のみローカル変換することが国際開発のベストプラクティスです。

Y2K38問題

32ビット符号付き整数で保存されたUnixタイムスタンプは2038年1月19日03:14:07 UTCにオーバーフローします。これをY2K38問題またはUnix Millennium Bugと呼びます。64ビットシステムでは問題ありませんが、組み込みシステムや古いレガシーシステムでは依然リスクがあります。

よくある質問

なぜUnix時間は1970年から始まるのですか?

Unixオペレーティングシステムが1969-1970年に開発された際、開発者が利便性のために1970年1月1日を基準点として選択しました。当時のコンピュータで扱いやすい値でした。

負のUnixタイムスタンプとは?

1970年1月1日以前の日付を表します。例えば-86400は1969年12月31日を意味します。JavaScriptのDateオブジェクトも負のタイムスタンプを正しく処理できます。

JavaScriptでタイムスタンプを取得するには?

Date.now()でミリ秒タイムスタンプを取得でき、Math.floor(Date.now()/1000)で秒タイムスタンプを得られます。new Date().getTime()もDate.now()と同じ値を返します。

関連ツール