1

javascript で新しい日付オブジェクトを作成していますが、dateString パラメーターと年/月/日の整数パラメーターのどちらを使用するかによって、いくつかの矛盾が見られます。

次に例を示します。

var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');

jsFiddle の例

dt1 には次の値が割り当てられます: Thu Apr 05 1979 00:00:00 GMT-0500 (中央夏時間)

dt2 には次の値が割り当てられます: Wed Apr 04 1979 19:00:00 GMT-0500 (中央夏時間)

誰かがこの動作を説明できますか? 2 番目の例 (dt2) は、Chrome が input[type=date] 要素から選択された日付を返す形式であるため、これを理解しようとしています。

4

1 に答える 1

4

フォーム'1979-04-05'が UTC 日付として解釈されているようです (そして、その UTC 日付は表示時に現地時間に変換されます)。フォームnew Date(1979,3,5);は現地時間として解釈されます。を使用Date.UTCして、3 引数形式の UTC 時間を強制できます ( docs を参照)。

Date解析 (および特にタイムゾーンの処理) は一般にブラウザー間で統一されていないため、それに依存しない方がよいでしょう。可能な限り UTC を使用するか、Date.jsmoment.jsなどの別のライブラリを使用してください。

于 2013-08-27T16:47:23.093 に答える