Unixタイムスタンプ変換

Unixタイムスタンプと人間が読める日付の相互変換

読み込み中...

時間単位の参考

単位
1分 60
1時間 3,600
1日 86,400
1週間 604,800
30日 2,592,000
365日 31,536,000
イベント タイムスタンプ
Unixエポック 0
10億(2001年9月) 1,000,000,000
15億(2017年7月) 1,500,000,000
20億(2033年5月) 2,000,000,000
Y2038(32ビット上限) 2,147,483,647
30億(2065年1月) 3,000,000,000

コードで現在のUnixタイムスタンプを取得

JavaScript / TypeScript

Math.floor(Date.now() / 1000)  // seconds
Date.now()                      // milliseconds

Python

import time
int(time.time())                # seconds

PHP

time()                          // seconds
microtime(true)                 // with microseconds

Go

time.Now().Unix()               // seconds
time.Now().UnixMilli()          // milliseconds

Ruby

Time.now.to_i                   # seconds
Time.now.to_f                   # with fractional

Java / Kotlin

System.currentTimeMillis() / 1000 // seconds
Instant.now().getEpochSecond()    // Java 8+

C# / .NET

DateTimeOffset.UtcNow.ToUnixTimeSeconds()
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()

Rust

SystemTime::now()
  .duration_since(UNIX_EPOCH)?.as_secs()

Swift

Int(Date().timeIntervalSince1970) // seconds

Bash / Shell

date +%s                        # GNU/Linux
date -j +%s                     # macOS

SQL (PostgreSQL)

SELECT EXTRACT(EPOCH FROM NOW())
SELECT NOW()::timestamp

SQL (MySQL)

SELECT UNIX_TIMESTAMP()
SELECT FROM_UNIXTIME(1713024000)

Unix時間とは?

Unix時間(エポック時間、POSIX時間、Unixタイムスタンプとも呼ばれます)は、Unixエポック(1970年1月1日 00:00:00 UTC)からの経過秒数として時刻を追跡するシステムです。1960年代後半にベル研究所でUnixオペレーティングシステムとともに導入され、以来コンピューティングで最も広く使われる時刻表現となっています。

Unixタイムスタンプの最大の利点はその普遍性です。タイムゾーンやロケールに関係なく、同じ絶対的な瞬間を表します。タイムスタンプ1713024000は常に2024年4月14日 00:00:00 UTCを意味します。ニューヨークでも、ロンドンでも、東京でも同じです。これにより、データベースへのタイムスタンプの保存、分散システムの同期、ネットワークを通じた時刻値の送信に最適です。

Unix時間は意図的に閏秒を無視しています。毎日はちょうど86,400秒として扱われます。これにより計算が簡素化されますが、UTCからのわずかなずれが生じます。実際には、その差はごくわずかで、1972年に閏秒が導入されて以来、蓄積された差は30秒未満です。

Unix時間の最も重要な制限は2038年問題でした。初期の実装ではタイムスタンプを32ビット符号付き整数として保存していたため、2,147,483,647(2038年1月19日 03:14:07 UTC)までの値しか表現できませんでした。現代のシステムは主に64ビット整数に移行しており、約2920億年まで範囲が拡張されています。

よくある質問

Unixタイムスタンプとは何ですか?

Unixタイムスタンプは、1970年1月1日 00:00:00 UTC(「Unixエポック」)からの経過秒数です。タイムゾーンに依存しない単一の整数として時点を表します。例えば、タイムスタンプ0は1970年1月1日UTCの深夜、1000000000は2001年9月9日 01:46:40 UTCです。

タイムスタンプが秒かミリ秒かを見分けるには?

桁数を数えてください。10桁の数値は秒(例:1713024000)、13桁の数値はミリ秒(例:1713024000000)です。JavaScriptのDate.now()はミリ秒を返しますが、多くのサーバーサイド言語(Python、PHP、Go、Ruby)は秒を返します。当ツールはフォーマットを自動検出します。

Y2038問題とは何ですか?

Unixタイムスタンプに32ビット符号付き整数を使用するシステムは、2038年1月19日 03:14:07 UTC(タイムスタンプ2,147,483,647)までの時刻しか表現できません。その後、整数がオーバーフローします。現代の64ビットシステムではこの問題は完全に回避され、約2920億年分の日付を表現できます。

Unix時間は閏秒に対応していますか?

いいえ。Unix時間は毎日を正確に86,400秒として扱い、閏秒を完全に無視します。UTCに閏秒が挿入されると、Unix時間は実質的にその1秒を繰り返します。1972年以降の蓄積差は30秒未満で、ほとんどのアプリケーションでは無視できます。

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

この日付は1960年代後半にベル研究所でUnixオペレーティングシステムの開発中に選ばれました。新しい10年の始まりというキリの良い数字で、実用的に十分近い日付であり、32ビット整数で十分な将来の時間をカバーできました。

Unixタイムスタンプは負の値になりますか?

はい。負のUnixタイムスタンプは1970年1月1日より前の日付を表します。例えば、-86400は1969年12月31日を表します。ほとんどのプログラミング言語と当ツールは負のタイムスタンプを正しく処理します。