JavaScriptでタイムゾーンを意識した日時操作まとめ!初心者でもわかる方法
先生と生徒の会話形式で理解しよう
生徒
「JavaScriptで海外の時間や自分のタイムゾーンに合わせた日時を扱う方法ってありますか?」
先生
「あります。JavaScriptではDateオブジェクトが標準でタイムゾーンを扱いますが、UTC(協定世界時)やローカルタイムを意識して操作することが大切です。」
生徒
「UTCって何ですか?」
先生
「UTCは世界共通の基準時です。日本時間はUTCより9時間進んでいるので、日本時間を扱うときは9時間を意識する必要があります。」
1. Dateオブジェクトのタイムゾーンの基本
JavaScriptのDateオブジェクトは、内部的にはUTCで時間を保持しています。画面に表示するときにローカルタイム(パソコンやブラウザのタイムゾーン)に変換されます。
const now = new Date();
console.log("ローカルタイム:", now.toString());
console.log("UTCタイム:", now.toUTCString());
ローカルタイム: Tue Nov 18 2025 19:00:00 GMT+0900 (日本標準時)
UTCタイム: Tue, 18 Nov 2025 10:00:00 GMT
この例では、ローカルタイムが日本時間(UTC+9)として表示され、UTCは世界標準の時間として表示されています。
2. UTCで日時を設定・取得する方法
UTCを使うと、どの国からアクセスしても同じ時間を扱えます。getUTCFullYear()やsetUTCDate()などのメソッドがあります。
// UTCの日時取得
const utcNow = new Date();
console.log("UTC年:", utcNow.getUTCFullYear());
console.log("UTC月:", utcNow.getUTCMonth() + 1); // 月は0から11
console.log("UTC日:", utcNow.getUTCDate());
// UTCで日時設定
const utcDate = new Date();
utcDate.setUTCFullYear(2026);
utcDate.setUTCMonth(0); // 1月
utcDate.setUTCDate(1);
console.log(utcDate.toUTCString());
UTC年: 2025
UTC月: 11
UTC日: 18
Wed, 01 Jan 2026 10:00:00 GMT
このようにUTCを意識すれば、海外サービスとの連携やログ管理が簡単になります。
3. タイムゾーン差を計算して日時を調整する
日本時間など特定のタイムゾーンに合わせるには、UTC時間にオフセットを足す方法があります。
// 日本時間(UTC+9)に変換
const utc = new Date(Date.UTC(2025, 10, 18, 10, 0, 0)); // 10時UTC
const jstOffset = 9 * 60; // 分単位
const jstTime = new Date(utc.getTime() + jstOffset * 60 * 1000);
console.log(jstTime.toString());
Tue Nov 18 2025 19:00:00 GMT+0900 (日本標準時)
UTCから日本時間への変換は、オフセットをミリ秒単位で足すだけで簡単に行えます。
4. ISO形式でタイムゾーンを意識した日時取得
toISOString()を使うと、UTC基準でISO 8601形式の文字列を取得できます。ログやAPI連携によく使われます。
const isoString = new Date().toISOString();
console.log(isoString);
2025-11-18T10:00:00.000Z
末尾のZはUTCを示しています。これを基にローカルタイムに変換することも可能です。
5. 実務でのポイント
- サーバーやAPIとの日時のやり取りはUTCで統一するとトラブルが少ない
- 画面表示は
toLocaleString()やIntl.DateTimeFormatを使うとユーザーのタイムゾーンに合わせられる - 加算・減算を行う場合も、UTCベースで計算すると時差による誤差を防げる
// ユーザーのタイムゾーンに合わせて表示
console.log(new Date().toLocaleString("ja-JP", { timeZone: "Asia/Tokyo" }));
2025/11/18 19:00:00
このようにタイムゾーンを意識すると、世界中のユーザーに正しい日時を表示できるようになります。