1. ホーム
  2. ジャバスクリプト

[解決済み】文字列表現を使わずにタイムゾーンを設定した日付を作成する

2022-03-23 02:21:07

質問

日、月、年の3つのドロップダウンを持つWebページがあります。もし私がJavaScriptの Date コンストラクタに数値を入力すると Date オブジェクトを作成し、現在のタイムゾーンを表示します。

new Date(xiYear, xiMonth, xiDate)

正しい日付を入力しても、夏時間の関係でその日付がGMT+01:00だと思い込んでしまう。

ここで問題なのは、次のように渡すことです。 Date を Ajax メソッドに渡すと、サーバー上で日付がデシリアライズされるときに GMT に変換され、1 時間分日がずれてしまいます。 今なら、日、月、年を個別にAjaxメソッドに渡すことができますが、もっと良い方法があるように思います。

いただいた回答で正しい方向を示しましたが、ただ単に setUTCHours() を単体で変更しました。

Apr 5th 00:00 GMT+01:00 

になります。

Apr 4th 23:00 GMT+01:00

さらに、UTCの日付、月、年を設定して、最終的に以下のようになります。

Apr 5th 01:00 GMT+01:00

というのは、私が欲しかったものです。

どのように解決するのですか?

使用方法 .setUTCHours() を使えば、実際にUTC-timeで日付を設定することができ、システム全体でUTC-timeを使用できるようになります。

<ストライク date-stringを指定しない限り、コンストラクタでUTCを使用して設定することはできませんが。

使用方法 new Date(Date.UTC(year, month, day, hour, minute, second)) を使用すると、特定のUTC時間からDate-オブジェクトを作成できます。