new Date() の物理的な説明
JavaScript の new Date()
コンストラクターがどのように動作するかを物理的な視点で解説します.
概要
- UNIXエポック:1970年1月1日 00:00:00(UTC)を起点
- OSは現在の時刻をUNIX時間(ミリ秒)で管理
new Date()
はその時刻を取得して Date オブジェクトを生成
仕組みの流れ
- OS が現在の時間を保持(RTC やシステムクロック)
- JavaScript の
new Date()
がその時刻を取得
- 値は 2進数(電気信号 on/off)で RAM に保存
toLocaleString()
により人間向け表示に変換
仕組みの流れ
- OS が現在の時間を保持(RTC やシステムクロック)
- JavaScript の
new Date()
がその時刻を取得
- 値は 2進数(電気信号 on/off)で RAM に保存
toLocaleString()
により人間向け表示に変換
new Date() の物理的な説明
Windows / Linux / macOS などのコンピュータの OS には, 1970年1月1日 00:00:00(UTC) を起点とした「UNIXエポック(UNIX時間)」を管理する仕組みがある.
これは, そこから現在までに経過した時間を「ミリ秒単位の数値」として保持している.
JavaScript の new Date()コンストラクターは, 1秒間に数億回(GHz)という高速で切り替わるタイミング(電気的信号)を一つ取得し, その情報で「年月日と時刻」が確定する.
「年月日と時刻」は Unixタイムスタンプ と呼ばれ, Date オブジェクトとして保持することになる.
取得したクロックの電気信号は電圧の変化 ( on / off / on / off ) であるが, ラム・メモリーに送られるとき, 情報は2進数に変換が可能な電気信号として扱われる.
let 今=new Date(); という記述により, 取得した日時の情報は「変数 今」という形で格納されるが, ここで取得したクロックの電気信号は2進数の形式で保存されている → 1101001010100101101101101101000 (バイナリ表記).
今.toLocaleString() メソッドを使用することで, バイナリ表記は人間に読みやすい10進数に変換される.
つまり, 1101001010100101101101101101000 → Unixタイムスタンプ 1110677208 → 2025/12/30 4:50:00 (10進数).
次に textContent を使って表示するが, JavaScript では, まずどこに表示するのかを決めなければいけない.
このドキュメント内の が document で, getElementById("目印") が場所(DOM)である.
用語補足
用語 | 説明 |
UNIXエポック | 1970年1月1日 00:00:00(UTC) |
UNIXタイムスタンプ | エポックからの経過時間(ミリ秒) |
new Date() | 現在時刻を取得する JavaScript 構文 |
toLocaleString() | 日付・時刻を地域向けに変換 |