• Date类型


    最近写了一个calendar程序,遇到了很多问题,下面我列出一些个人认为很有意思,也值得思考的问题,供大家参考。

    注:每一个问题我给出的方法也许不是最好的方法,若有更好的方法,希望大牛来补充完善。

    问题一:给定一个日期,如何获取该月的总天数。

    方法一:hack技巧

    思路:

    var date = new Date(2017,1,0);

    变量date表示的是2017年2月第0天,也就是1月的最后一天31号,以此类推。

    代码:

            function getSumDay(date) {
                var day = new Date(date.getFullYear(), date.getMonth() + 1, 0);
                return day.getDate();
            }

    方法二:常规思路

    思路:

    从该月第一天开始+1,当日期的月份和该月不等时,记录增加的次数,这个数值就是该月的天数。

    代码:

            function getSumDay(date) {
                var dayNumber = 1; //初始化日号
                var monthNumber = date.getMonth(); //月号
                var sum = 0;
    
                //给新日期初始化
                var newDate = new Date(date.setDate(1));
    
                //只要月份相等,说明还在该月中,继续循环,直到下一个月
                for (var newMonthNumber = newDate.getMonth(); newMonthNumber == monthNumber; ++dayNumber) {
                    newDate = new Date(newDate.setDate(dayNumber));
                    newMonthNumber = newDate.getMonth();
                    ++sum;
                }
                return sum - 1;
            }

    方法三:hack方法

    思路:因为一个月没有第32天,而setDate(day)中如果传入的day大于该月的天数,那么会自动进入下一个月。

    代码:

            function getSumDay(year,month){
                return 32-new Data(year,month,32).getData();
            }
    
            alert(getSumDay(2017,2));
  • 相关阅读:
    使用 %matplotlib inline 出错?
    RandomForest 调参
    sql中的笛卡尔积
    Sublime text 3 搭建Python3 IDE
    在Windows Python3.5 安装LightGBM
    lodash获取数组或对象的值 at
    lodash 移除数据元素 pull without 删除数组元素
    js 常用类型转换简写
    UTC时间格式转换
    CSS Flexible 布局兼容性以及解决方案
  • 原文地址:https://www.cnblogs.com/lijy/p/6284457.html
Copyright © 2020-2023  润新知