美文网首页让前端飞Web前端之路前端开发
2019-06-03 js获取某月天数千万不要直接拿网上的set

2019-06-03 js获取某月天数千万不要直接拿网上的set

作者: sherleysong | 来源:发表于2019-06-03 11:03 被阅读17次

    先说正确写法,就用一行代码:

      new Date(yyyy, month + 1, 0).getDate() 
    

    如:


    某正确代码截图.png

    天下代码一通乱抄抄抄!
    误人子弟啊!

    先来个预览吧! (打×的代表里面涉及到了错误代码段,并且没有指出其错误点)

    百度截图.png

    具体的错误代码:

    错误代码.png

    测试一下就知道错哪里了。

    比如今天2019.5.31号,得到的却是30天:

     var curDate = new Date(2019,4,31); // 2019.05.31
     var curMonth = curDate.getMonth(); // 5月
     curDate.setMonth(curMonth + 1); // 2019.6.31 ? 不存在,变成了2019.7.1
     curDate.setDate(0); // 2019.7.0 -> 2019.6.30
     curDate.getDate();  // 30天。 
    

    这里还有一段测试代码,date2是有问题的:

    var date1  = new Date(2019,0,31) 
    date1.setMonth(2)  // 设为3月份
    date1.setDate(0)
    
    var date2  = new Date(2019,0,31) 
    date2.setMonth(1)  // 设为2月份,但其实去2019.3.3了
    date2.setDate(0)
    
    console.log(date1,date2) // 结果都是2019.2.28!
    

    当然,这段代码也不是无可救药,改八改八也能用。
    就是在setMonth之前先setDate(1) 设为第一天(或其他1-28都行)。

    即:

     var curDate = new Date(2019,4,31); // 2019.05.31
     var curMonth = curDate.getMonth(); // 5月
     curDate.setDate(1); //  加这句,加这句,加这句,也ok
     curDate.setMonth(curMonth + 1); // 2019.6.1
     curDate.setDate(0); // 2019.6.0 -> 2019.5.30
     curDate.getDate();  // 31天。 
    

    ——end——

    mark一下,前两天运气好,有个同事在5.31号测到了排班排到下个月去了。虽然问题不麻烦,很快就定位到并解决了,但是,度娘给我的结果,真让我像吃了苍蝇一样难受。【呕】【呕】【呕】

    相关文章

      网友评论

        本文标题:2019-06-03 js获取某月天数千万不要直接拿网上的set

        本文链接:https://www.haomeiwen.com/subject/pdwqxctx.html