以下のような月末日取得の実装を行なっていた。
const date = new Date();
date.setMonth(date.getMonth() + 1);
date.setDate(0);
date.setHours(23, 59, 59, 999);
console.log(date)
setMonth
で対象の月 + 1の月をセットし、 setDate(0)
で前月の月末日をセット => 対象の月の月末日が求められるというロジックである。
基本的には正常に機能していたのだが、対象の日付が 2024-10-31
の場合に、 2024-11-30
が出力される不具合に遭遇した。
setMonth
の使用で、セットした月に存在しない日付だった場合、さらに + 1した月がセットされる。
今回のケースでは11月31日という存在しない日付となるため、自動的に12月に置き換えられていた。
そして、12月の状態で setDate(0)
としたため前月の月末日、つまり 2024-11-30
が出力される結果となった。
富山在住のプログラマー。
フルリモートで働いています。
Categories
AWS
Cloudflare
Docker
Github
go
html
JavaScript
microCMS
MySQL
Monthly Archives
2024/12 (1)
2024/11 (3)
2024/10 (1)
2024/09 (3)
2024/08 (7)
2024/07 (7)
2024/06 (4)
2024/05 (5)
2024/04 (6)