JavaScript で日付計算の妙
問題です。以下コードを実行した際に何と出力されるでしょう?
先月の 1 日を取得したい気持ちです。
1 | let dt = new Date('2022-10-31T15:00:00+0900'); |
答えは 2022-10-01T06:00:00.000Z
です。
10 月 31 日の 1 ヶ月前は 9 月 31 日、
9 月は 30 日までなのでその翌日の 10 月 1 日になってしまったというものです。
先月の 1 日を取得する場合は先に setDate(1)
が必要です。
1 | let dt = new Date('2022-10-31T15:00:00+0900'); |
ちなみに先月の月末は setDate(0)
することで取得できます。
1 | let dt = new Date('2022-10-31T15:00:00+0900'); |
Lambda で 10 月 31 日の本日に 1 ヶ月前が取得できないな?となってちょっとハマってしまった問題でした。
terraform で簡易的な Lambda スクリプトを管理しており、極力 package を利用せずに nodejs で日付計算したかった背景があります。
以上
参考になれば幸いです。
JavaScript で日付計算の妙
https://kenzo0107.github.io/2022/10/30/2022-10-31-js-get-a-last-month/