閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

JavaScriptのDateクラスで日にちの増減を行う

JavaScriptのDateクラスにはAddとか、AddDaysのようなメソッドがありません。moment.jsなどを入れるとかTemporalを試してもいいのですが、手軽にDateだけでなんとかしたい。

DateにはsetDateなどset系のメソッドがありますが、ここに負の値などを入れてもいい感じに計算してくれるのでこれで代用できるようです。

const date = new Date(2020, 0, 1); // 2020-1-1
date.setDate(date.getDate() - 1);
// date = 2019-12-31

setDateはDateインスタンスの現在時刻から日付だけを変更するもので、getDateの戻り値と任意の日数を足してあげればAddDaysみたいなことができます。

昔は日付の計算でよく月末の翌日を単純に日付だけ足し算でやって8月32日になってしまったり、とかありがちでしたが、単純にnew Date(2020, 8, 32)と書いても9/1になってくれるようで優しいですね。.NETだと例外になるみたいですが、果たしてどちらが親切なのか(ケースバイケースか)。