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>

 

posted @   WmW  阅读(1252)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示