1. 導入:なぜこのメソッドが必要なのか?
JavaScriptで日付や時間を扱う際、多くの人が「今の時間」を取得するために new Date() を使います。しかし、サーバーとのやり取りや、グローバルなサービスを開発する場合、「日本の時間(JST)」と「世界標準時(UTC)」のズレが問題になることがあります。
Date.prototype.getUTCMilliseconds は、日付オブジェクトから「ミリ秒」部分を、時差を考慮しない「世界標準時(UTC)」に基づいて取得するためのメソッドです。これを使うことで、サーバー側の時刻基準とクライアント側の時刻基準を正確に同期させることができます。
2. 基礎知識:UTCとミリ秒について
まず、UTC(協定世界時)とは、世界中の時刻の基準となる時間です。日本はUTCより9時間進んでいます。
次に、JavaScriptの「ミリ秒(Milliseconds)」は、1秒の1000分の1の単位です。プログラムでアニメーションのタイミングを制御したり、データの更新時刻をミリ秒単位で厳密に記録したりする際に重要になります。
通常の getMilliseconds() は「実行環境のローカル時間」を返しますが、getUTCMilliseconds() は「場所に関係なく常に世界標準の時間」を返します。これにより、ユーザーが世界中のどこにいても、同じ基準でミリ秒を取得できます。
3. 実装と解決策
使い方は非常にシンプルです。Dateオブジェクトを作成し、その後にメソッドを呼び出すだけです。
具体的な手順:
1. new Date() で現在の日時を取得する。
2. そのオブジェクトに対して .getUTCMilliseconds() を呼び出す。
3. 戻り値として「0から999」の整数が返されるので、それを変数に格納して利用する。
4. サンプルプログラム
以下のコードをブラウザのコンソールや、Node.js環境で実行してみてください。
// 現在の日時を取得
const now = new Date();
// 世界標準時(UTC)でのミリ秒を取得
const utcMs = now.getUTCMilliseconds();
// ローカル時間(日本時間なら+9時間)のミリ秒を取得
const localMs = now.getMilliseconds();
console.log("世界標準時(UTC)のミリ秒: " + utcMs);
console.log("ローカル時間のミリ秒: " + localMs);
// 実践例:ミリ秒が500未満か、それ以上かを判定して処理を分ける
if (utcMs < 500) {
console.log("現在は秒の前半です");
} else {
console.log("現在は秒の後半です");
}
5. 応用・注意点
現場で扱う際の重要なポイントは以下の2点です。
・「ミリ秒」の基準はローカルもUTCも同じ
実は、時差が発生するのは「時(Hours)」だけであり、「ミリ秒」そのものは世界共通で同時に進んでいます。そのため、ローカル時間の getMilliseconds() と結果が大きく変わることはありませんが、「時刻の整合性」を保つために、他のUTC系メソッド(getUTCMinutesなど)と組み合わせて使用するのが一般的です。
・サーバーとの同期
APIから送られてくるタイムスタンプがUTC基準である場合、ローカル環境のメソッドを使ってしまうと、意図しないズレが生じる可能性があります。日付を比較・計算する際は、「すべてUTCで統一する」ことを強くおすすめします。
まずはこのメソッドを使って、ミリ秒単位の正確な時間制御にチャレンジしてみてください!