5

時間部分に影響を与えずに JavaScript 日付オブジェクトの日付部分を設定する JavaScript の最良の方法は何ですか?

あなたがこのような日付を持っているとしましょう Wed Oct 31 2012 10:15:00 GMT-0400 (EDT)

そして、時刻を変更せずに 11 月 1 日になるように更新します。

一見すると、これでうまくいくと思うでしょうが、

exampledate.setFullYear(2012);
exampledate.setMonth(10);
exampledate.setDate(1);

しかし、結果は Sat Dec 01 2012 10:15:00 GMT-0500 (EST)

この理由は、10 月が 31 日で 11 月が 30 日しかないためだと思います。他のオプションは何ですか? 新しい日付オブジェクトを作成する必要がありますか?

4

2 に答える 2

2

JavaScript の Date オブジェクト セッター メソッドを使用すると、(オプションで) 状況に応じて (プライマリ コンポーネントに加えて) 複数の日付/時刻コンポーネントを一度に設定できることがよくあります --- これがやりたいことです。

あなたのユースケースでは、構文はsetFullYearissetFullYear(year,month,day)であるため、年を明示的に設定することに加えて (これにより、最初の日付に基づいて月と日が暗黙的に更新されます)、月と日を明示的に設定することもできます。それで。例えば:

var d = new Date();
d.setFullYear(2020,10,3);

戻ります

Tue Nov 03 2020 13:10:34 GMT-0500 (EST)

詳細については、JavaScript の setFullYear() メソッドを参照してください。

Date オブジェクトの時間コンポーネント (時間、分、秒、ミリ秒など) は日付部分 (年、月、日) に依存しないため、最初の時間コンポーネントが維持されます。その後、時刻コンポーネントを更新する必要がある場合は、setHours()必要に応じて または他のメソッドを安全に使用できます。日付コンポーネントへの暗黙的な更新は発生しないためです。

于 2012-12-03T18:14:16.790 に答える
2

最初に日付を設定し、次に月を設定します。

于 2012-12-03T18:02:17.060 に答える