Web アプリケーションでは、ドロップダウンまたは入力フィールドを介してユーザーから日付と時刻の情報を収集するのが一般的です。ただし、数値を使用して JavaScript Date オブジェクトを作成すると、特にデータがシリアル化および逆シリアル化される場合に、タイムゾーンの問題が発生する可能性があります。
次のコードを検討してください:
new Date(xiYear, xiMonth, xiDate);
このコードは、指定された年、月、および日付に基づいて Date オブジェクトを作成します。ただし、ユーザーの現在のタイムゾーンを前提としているため、アプリケーションが別のタイムゾーンを使用している場合、不一致が発生する可能性があります。
文字列表現の場合は、次の手順に従います。
Date オブジェクトを作成するUTC 値から:
const utcDate = new Date(Date.UTC(xiYear, xiMonth, xiDate));
希望のタイムゾーンを設定します:
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 サイトの他の関連記事を参照してください。