js获得月份的最后一天日期以及其中的坑

今天有个需求,想要获取指定月的时间段,比如 2020-9-1到2020-9-30,由于存在大月小月的问题,天数存在30和31的2种还有2月份,所以需要想办法处理下

刚开始我使用比较笨的方法来解决,即将2020-9-1的Date对象先加一个月,然后再减1天,但是这样感觉比较蠢

后来在网上看见new Date(year,month,day)时,给day传值为0时,好像就能获取月份的最后一天

但是实际使用中我发现,day为0时,得到的并不是传入的month月的最后一天,而是month-1月的最后一天

比如咱们传入new Date(2020,8,0)想象着得到2020年9月30号(js的month从0开始的),但是实际会得到 2020年8月31,这个8,0好像应该理解成9月0号,比9月1号少一天,所以就等同于8月31号了

<script> 
    function test() {
        console.log(new Date(2020, 8, 1, 23, 59, 59)); //2020年9月1号
        console.log(new Date(2020, 8, 0, 23, 59, 59)); //2020年8月31号
        console.log(new Date(2020, 9, 0, 23, 59, 59)); //2020年9月30号
    }
    test(); 
</script>

原文地址:https://www.cnblogs.com/luludongxu/p/13608409.html