0Pricing
JavaScript Academy · レッスン

タイムゾーンと UTC

UTC とローカル時刻を正しく扱います。

「タイムゾーンと UTC」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。

ローカル時刻と UTC

日付は絶対的な1つの時点を保持しますが、ローカル時刻または世界共通の基準時刻であるUTCとして読み取れます。ゲッターには、どちらの種類も用意されています。

const d = new Date(Date.UTC(2024, 0, 15, 12, 0, 0))
console.log(d.getUTCHours())

UTC ゲッター

getUTCFullYear や getUTCHours のように UTC で始まるメソッドは、実行するマシンに関係なく、UTC のタイムゾーンで日付の各要素を読み取ります。

const d = new Date(Date.UTC(2024, 5, 15, 8, 30, 0))
console.log(d.getUTCFullYear())
console.log(d.getUTCHours())
console.log(d.getUTCMinutes())

getTimezoneOffset

getTimezoneOffset は、ローカル時刻と UTC の差を分単位で返します。正の値は、ローカル時刻が UTC より遅れていることを示します。

const d = new Date()
const offset = d.getTimezoneOffset()
console.log(typeof offset)

オフセットの符号

オフセットの符号は、多くの人が想定するものとは逆です。UTC より進んでいるタイムゾーンでは、オフセットが負になります。分を 60 で割ると時間に変換できます。

const offsetMinutes = 120
const hours = offsetMinutes / 60
console.log(hours)

UTC 日付の作成

Date.UTC はコンストラクターと同じ各要素の引数を受け取りますが、それらを UTC として解釈し、new Date に渡せるタイムスタンプを返します。

const ts = Date.UTC(2024, 0, 1, 0, 0, 0)
const d = new Date(ts)
console.log(d.getUTCHours())

UTC セッター

setUTCHours のようなセッターは、UTC を基準にして、ローカル用セッターと同じように UTC のタイムゾーンで日付を調整します。

const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
d.setUTCHours(15)
console.log(d.getUTCHours())

ISO 文字列の Z

ISO 文字列の末尾にある Z は、その時刻が UTC(Zulu time とも呼ばれます)であることを示します。Z がない文字列は、ローカル時刻として解釈される場合があります。

const d = new Date("2024-01-15T10:00:00Z")
console.log(d.getUTCHours())

同じ瞬間を異なる方法で読み取る

ローカルのゲッターと UTC のゲッターは、異なるタイムゾーンから同じ瞬間を表すため、時刻の値はオフセット分だけ異なることがあります。

const d = new Date(Date.UTC(2024, 0, 1, 12, 0, 0))
console.log(d.getUTCHours())

UTC で保存する

一般的なベストプラクティスは、すべての日付を UTC で保存し、表示するときだけローカル時刻に変換することです。これにより、地域をまたいだときの曖昧さを避けられます。

const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
console.log(d.toISOString())

タイムゾーンの指定

フォーマット用メソッドでは timeZone オプションを受け取れるため、UTC のように選択したタイムゾーンで時点を明示的に表示できます。

const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
const text = d.toLocaleString("en-US", { timeZone: "UTC" })
console.log(typeof text)

落とし穴を避ける

同じ日付にローカル用メソッドと UTC 用メソッドを混在させると、見つけにくいバグの原因になります。計算ごとにどちらか一方のモデルを選び、一貫して適用してください。

const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
console.log(d.getUTCFullYear())
console.log(d.getUTCMonth())

確認問題

タイムゾーンに関する知識を確認しましょう。

まとめ

まとめ: 日付はローカル時刻または UTC のどちらかで、一貫して読み書きしてください。

  • UTC のゲッターとセッターは世界共通のタイムゾーンで動作します
  • getTimezoneOffset は符号が逆になった分単位の値を返します
  • Z サフィックスは ISO 文字列が UTC であることを示します
  • UTC で保存し、ローカル時刻で表示します
const d = new Date(Date.UTC(2024, 0, 1, 12, 0, 0))
console.log(d.getUTCHours())

よくある質問

「タイムゾーンと UTC」レッスンは無料ですか?

はい。「タイムゾーンと UTC」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。

「タイムゾーンと UTC」で何を学びますか?

UTC とローカル時刻を正しく扱います。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「タイムゾーンと UTC」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Date の作成と読み取り
  2. タイムスタンプと Date の計算
  3. 日付をフォーマットする
  4. タイムゾーンと UTC
← JavaScript Academyに戻る