月末と月初
JavaScriptで月末や月初を取得する方法についての解説です。
JavaScriptの日付型のインスタンスは以下で作成できます。
new Date(年を示す数値, 月を示す数値, 日を示す数値)
月を示す数値が0起算であることに注意が必要ですが(例えば3は4月を示します)、
月や日に0やマイナスの数字、あるいは13や32が指定されても日付は正しく計算されます。
日を示す数値が0であればそれはある日付1日の前日を示しますし、 月を示す数値を1減算すればそれはある日付の前月を示します。
// 起点とする日付 2020/06/15
let date = new Date(2020,5,15);
console.log(date); // Mon Jun 15 2020 00:00:00 GMT+0900 (日本標準時)
// 前日 2020/06/14
console.log(new Date(date.getFullYear(), date.getMonth(), date.getDate() - 1)); // Sun Jun 14 2020 00:00:00 GMT+0900 (日本標準時)
// 翌日 2020/06/16
console.log(new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1)); // Tue Jun 16 2020 00:00:00 GMT+0900 (日本標準時)
// 前月の月初 2020/05/01
console.log(new Date(date.getFullYear(), date.getMonth() - 1, 1)); // Fri May 01 2020 00:00:00 GMT+0900 (日本標準時)
// 前月の月末 2020/05/30
console.log(new Date(date.getFullYear(), date.getMonth(), 0)); // Sun May 31 2020 00:00:00 GMT+0900 (日本標準時)
// 当月の月初 2020/06/01
console.log(new Date(date.getFullYear(), date.getMonth(), 1)); // Mon Jun 01 2020 00:00:00 GMT+0900 (日本標準時)
// 当月の月末 2020/06/30
console.log(new Date(date.getFullYear(), date.getMonth() + 1, 0)); // Tue Jun 30 2020 00:00:00 GMT+0900 (日本標準時)
// 翌月の月初 2020/07/01
console.log(new Date(date.getFullYear(), date.getMonth() + 1, 1)); // Wed Jul 01 2020 00:00:00 GMT+0900 (日本標準時)
// 翌月の月末 2020/07/30
console.log(new Date(date.getFullYear(), date.getMonth() + 2, 0)); // Fri Jul 31 2020 00:00:00 GMT+0900 (日本標準時)
// 前年年初日 2019/01/01
console.log(new Date(date.getFullYear() - 1, 0, 1)); // Tue Jan 01 2019 00:00:00 GMT+0900 (日本標準時)
// 前年年末日 2019/12/31
console.log(new Date(date.getFullYear(), 0, 0)); // Tue Dec 31 2019 00:00:00 GMT+0900 (日本標準時)
// 当年年初日 2020/01/01
console.log(new Date(date.getFullYear(), 0, 1)); // Wed Jan 01 2020 00:00:00 GMT+0900 (日本標準時)
// 当年年末日 2020/12/31
console.log(new Date(date.getFullYear(), 12, 0)); // Thu Dec 31 2020 00:00:00 GMT+0900 (日本標準時)
// 翌年年初日 2021/01/01
console.log(new Date(date.getFullYear() + 1, 0, 1)); // Fri Jan 01 2021 00:00:00 GMT+0900 (日本標準時)
// 翌年年末日 2021/12/31
console.log(new Date(date.getFullYear() + 1, 12, 0)); // Fri Dec 31 2021 00:00:00 GMT+0900 (日本標準時)