Unixタイムスタンプから日付への変換ツール:12/24時間形式のサポート
Unixタイムスタンプ(1970年1月1日午前0時からの経過秒数)をカレンダーの日付と時刻に変換します。入力値が秒・ミリ秒・マイクロ秒のどの単位かを自動的に判別し、結果を12時間制または24時間制で表示できるため、ログ解析やAPI開発、データベース調査の場面で役立ちます。
Unixタイムスタンプ変換
Unix タイムスタンプは、1970年1月1日(UTC)からの秒数です
変換された日付と時刻
Unix タイムスタンプとは?
Unix タイムスタンプは、1970年1月1日(UTC/GMT)の午前0時から経過した秒数です。うるう秒は考慮されていません。Unix システムやプログラミング言語で日付と時刻の計算に広く使用されています。
ドキュメンテーション
Unixタイムスタンプを日付に変換
Unixタイムスタンプは、特定の時点を表す数値です。1970年1月1日のUTC午前零時から経過した秒数を整数で数えます。この時点はUnixエポックと呼ばれます。このツールは、Unixタイムスタンプを暦の日付と時刻に変換し、24時間制または12時間制で表示します。
Unixタイムスタンプを日付に変換する方法
基本的な式は簡単です。
日付 = Unixエポック(1970-01-01、UTC 00:00:00)+ タイムスタンプ(秒単位)
秒数の生の数値を日付に変換するには、その秒数を1970年1月1日に加えます。次に、結果を年、月、日、時、分、秒に分ける必要があります。この分割が難しいのは、うるう年(2月に1日を加える)や、月ごとに日数が異なることを考慮しなければならないためです。ほとんどのプログラミング言語にはこれを自動的に行う組み込みの日付関数があるため、誰も手順を追って計算する必要はありません。
計算例
タイムスタンプ1609459200を例にします。
- 1日の秒数で割ります:1,609,459,200 ÷ 86,400 = 18,628日。
- うるう年を考慮しながら、1970年1月1日から18,628日先まで数えます。
- 数えた日付は2021年1月1日になります。
したがって、1609459200はUTCで金曜日、2021年1月1日、00:00:00に変換されます。曜日の「金曜日」も同じ日数の計算から求められます。
コンバーターはUTCではなく、ブラウザーが報告するタイムゾーンで結果を表示します。ニューヨークの読者には、同じタイムスタンプが木曜日の2020年12月31日、19:00:00として表示されます。その日はニューヨークがUTCより5時間遅れていたためです。
タイムスタンプは負の値になることもあり、1970年より前の日付を表します。たとえば、-86400はエポックのちょうど1日前、つまりUTCで1969年12月31日、00:00:00です。
タイムスタンプの精度:秒、ミリ秒、マイクロ秒
すべてのシステムが時間を秒単位で計測するわけではありません。このコンバーターはタイムスタンプの桁数を調べ、その精度を推定します。
| 桁 | 精度 | 例 |
|---|---|---|
| 10 | 秒 | 1609459200 |
| 13 | ミリ秒 | 1609459200000 |
| 16 | マイクロ秒 | 1609459200000000 |
負のタイムスタンプでは、負号の分だけ文字が1つ増えます。そのため、-1609459200(11文字、10桁)は引き続き秒として読み取られます。それ以外の桁数は通常の秒として扱われます。ミリ秒およびマイクロ秒の値は、上記の秒の式を適用する前に、それぞれ1,000または1,000,000で割られます。
12時間制と24時間制
コンバーターでは、時刻を2通りの方法で表示できます。
- 24時間制では、AMやPMの表示を付けず、0時から23時までで時間を数えます。プログラマーはこれを軍用時刻と呼ぶこともあります。午後の3:00は15:00と表記されます。
- 12時間制では、午前零時から正午までをAM、正午から午前零時までをPMとして、1から12までの数字で時刻を表します。15:00は、24時間制では3:00 PMになります。
24時間制は、ヨーロッパ、ラテンアメリカ、アジアの大部分で標準的に使われ、世界中の科学、軍事、医療の分野でも使われています。12時間制は、米国、カナダ、その他いくつかの英語圏の国で日常的によく使われています。
対応する日付の範囲
このコンバーターは、-62135596800から253402300799までのタイムスタンプに対応しています。これは、先発グレゴリオ暦(現代の暦を、その導入年である1582年より過去にも遡って適用したもの)における、1月1日の1年から9999年12月31日までのすべての日付を含みます。この範囲外のタイムスタンプは、範囲エラーとして拒否されます。
2038年問題
多くの古いコンピューターシステムはUnixタイムスタンプを32ビット符号付き整数として保存しており、2,147,483,647までしか数えられません。エポックからその秒数が経過した時点は、UTCで2038年1月19日の03:14:07です。その瞬間を過ぎると、修正されていない32ビットシステムは負の数に戻り、日付を2038年ではなく1901年として読み取ります。これが2038年問題です。ただし、すべてのシステムに影響するわけではありません。タイムスタンプを64ビット数値として保存する最新のソフトウェアや、JavaScriptのように通常の数値として保存するソフトウェアは、オーバーフローなしで2038年より数千年先の日付も表せます。
Unixタイムスタンプの一般的な用途
Unixタイムスタンプは、コンパクトで比較や並べ替えが簡単なため、コンピューティングのさまざまな場面で使われています。
- データベースの行では、レコードが作成された時刻や最後に変更された時刻を記録するために使われます。
- Webサーバーでは、キャッシュや有効期限を制御するためにHTTPヘッダーやCookieで使われます。
- ログファイルでは、各イベントにタイムスタンプを付けることで、記録を時系列に並べられます。
- Gitなどのバージョン管理システムでは、コミット時刻をこの方法で記録します。
- Web APIでは、データが生成された時刻や最後に更新された時刻を示すために使われます。
よくある質問
Unixエポックとは何ですか? Unixエポックは、1970年1月1日のUTC午前0時です。すべてのUnixタイムスタンプが数え始める基準点です。
Unixエポックにはうるう秒が含まれますか? いいえ。Unix時刻は1日を正確に86,400秒として数え、UTCにときどき追加されるうるう秒を無視するため、天文時刻とはわずかにずれていきます。
Unixタイムスタンプは負の値になれますか? はい。負の値は1970年1月1日より前の日付を表します。
タイムスタンプが13桁で、10桁ではないのはなぜですか?
13桁のタイムスタンプは、秒ではなくミリ秒単位で測定されています。JavaScriptのDate.now()や多くのWeb APIはタイムスタンプをミリ秒単位で返すため、Web開発では13桁の値が一般的です。
Unixタイムスタンプはすべてのタイムゾーンで同じですか? 数値自体はどのタイムゾーンにも結び付いていません。常にUTCのエポックからの秒数を数えます。これを現地の日付と時刻に変換するには、そのタイムゾーンのオフセットを加えるため、コンバーターの出力は実行されている端末のタイムゾーンに従います。
このコンバーターが扱える最も遅い日付はいつですか? 9999年12月31日のUTC23:59:59で、タイムスタンプは253402300799です。最も早い日付は1月1日の1年、UTC00:00:00で、タイムスタンプは-62135596800です。