ホームページ >ウェブフロントエンド >jsチュートリアル >文字列表現を使用せずに、特定のタイムゾーンを持つ JavaScript 日付オブジェクトを作成するにはどうすればよいですか?

文字列表現を使用せずに、特定のタイムゾーンを持つ JavaScript 日付オブジェクトを作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 16:13:45671ブラウズ

How Can I Create a JavaScript Date Object with a Specific Timezone Without Using String Representations?

特定のタイムゾーンを持つ日付オブジェクトの作成

Web アプリケーションでは、ドロップダウンまたは入力フィールドを介してユーザーから日付と時刻の情報を収集するのが一般的です。ただし、数値を使用して JavaScript Date オブジェクトを作成すると、特にデータがシリアル化および逆シリアル化される場合に、タイムゾーンの問題が発生する可能性があります。

問題: 現在のタイムゾーンの Date オブジェクト

次のコードを検討してください:

new Date(xiYear, xiMonth, xiDate);

このコードは、指定された年、月、および日付に基づいて Date オブジェクトを作成します。ただし、ユーザーの現在のタイムゾーンを前提としているため、アプリケーションが別のタイムゾーンを使用している場合、不一致が発生する可能性があります。

解決策: UTC 時間を設定する

文字列表現の場合は、次の手順に従います。

  1. Date オブジェクトを作成するUTC 値から:

    const utcDate = new Date(Date.UTC(xiYear, xiMonth, xiDate));
  2. 希望のタイムゾーンを設定します:

    utcDate.setUTCHours(utcDate.getUTCHours() + timezoneOffset);

ここで timezoneOffsetユーザーのタイムゾーンと UTC の差です (単位は

たとえば、ユーザーのタイムゾーンが GMT 01:00 で、希望の日付が 4 月 5 日の場合:

const xiYear = 2023;
const xiMonth = 3; // April is 0-indexed
const xiDate = 5;
const timezoneOffset = 1;

const utcDate = new Date(Date.UTC(xiYear, xiMonth, xiDate));
utcDate.setUTCHours(utcDate.getUTCHours() + timezoneOffset);

console.log(utcDate.toLocaleString()); // Output: "Apr 5, 2023, 2:00:00 AM GMT+01:00"

このアプローチにより、日付オブジェクトは、文字列表現や冗長コードに依存せずに、目的のタイムゾーンで作成されます。

以上が文字列表現を使用せずに、特定のタイムゾーンを持つ JavaScript 日付オブジェクトを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。