JSは現在の月の最後の日に出会う穴を獲得しています.

1174 ワード

最近は前端のカレンダー機能を書いていますが、カレンダーの機能以外に日付計算の需要があります.当月の最後の日を取得して、最初に書いたら大丈夫です.その後、問題が発見されました.大体のコードはこうです.ダテの月は一ヶ月後で、set Dateを通じて0にすれば先月の最後の日がもらえます.
let date = new Date();
date.setMonth(date.getMonth() + 1);
//     0 , 0  1     
date.setDate(0);
console.log('    :' + date.toLocaleString())

log  
    :2019/8/31   3:34:02
すべては順調で、私は早くこの需要を終えました.でも!!!!!!!!物事はそんなに簡単ではないです.自分が退屈している時、1月に問題があることに気づきました.
//0   1 
let date= new Date(2019, 0, 31); 
date.setMonth(date.getMonth() + 1);
//      0 , 0  1     
date.setDate(0);
console.log('    :' + date.toLocaleString())

log  
    :2019/2/28   3:41:18
本来なら、私は日付を1月31日に設定しました.これから1ヶ月を加えたら、2月になるはずです.またset Date(0)を返したら、1月31日に戻るべきです.
その後、資料を調べて分かりました.
   month + 1,  JS      :
     +      
       date.setMonth(date.getMonth() + 1)     1 31  + 31  ,       ,        3 3 

       month + 1       1,                。
この需要の解決方法は毎月の1-28日に日付を設定すればいいです.
//      1-28   
let date= new Date(2019, 0, 4);
date.setMonth(date.getMonth() + 1);
//      0 , 0  1     
date.setDate(0);
console.log('    :' + date.toLocaleString())