不二如是 发表于 2017-11-11 11:52:26

技法79 (◐‿◑) 获得指定月份的天数

本帖最后由 不二如是 于 2017-11-11 11:52 编辑

http://xxx.fishc.com/forum/201705/05/225545py2j222x5z6x55n2.png

按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁



分析:
        通过计算某个月份的天数可以完成很多与日期结合的需求,例如:通过程序可以计算员工当月实际的工作天数、计算2月份天数判断是平年还是闰年等。

        如何获取指定日期的天数呢?对于Js特性了解不是很深的鱼油,会想到很复杂的算法。

        这次分享一个很棒的玩法。


   



Code:

HTML:
<h2>获取指定日期所在月份的天数</h2>
    <p id='getMonthDays1'>2017年1月:</p>
    <p id='getMonthDays2'>2017年2月:</p>

JS:
<script type="text/javascript">
    window.onload = function(){
      //日期格式化成字符串====================start
      function dateFormat(){
            Date.prototype.format = function(f){
                //获取对象中的日期
                var date = {
                            "Y" : this.getFullYear(),//获取年
                            "M" : (this.getMonth() + 1),//获取月
                            "D" : this.getDate(),//获取日
                            "h" : this.getHours(),//获取小时
                            "m" : this.getMinutes(),//获取分钟
                            "s" : this.getSeconds()//获取秒
                        },
                        d = "",//初始化接受日期变量的对象
                        r = false,//判断是否存在待替换的字符
                        reg = null,//正则
                        _d = "";//日期

                for(d in date){//过滤日期标示符
                  //判断是否有待格式化的字符
                  reg = new RegExp("[" + d + "]{1,}", "g");
                  r = reg.test(f);

                  if(r)//验证是否存在
                  {
                        _d = date;//被替换的日期
                        f = f.replace(reg, _d < 10 ? ("0" + _d) : _d);
                  }
                }

                return f;
            }
      }

      dateFormat();

      //获取指定日期所在月份的天数
      function getMonthDays(Y, M){
            //Y代表年份;M 代表为月数0~11,月份加1,但是第3个参数为0,所以不+1;第3个参数要求最小为1,但是设置0,就变成M月的最后一天了
            return new Date(Y, M, 0).getDate();
      }
      //获取指定日期所在月份的天数====================start
      document.getElementById("getMonthDays1").innerHTML = "2017年1月:" + getMonthDays("2017", "1") +"天";
      document.getElementById("getMonthDays2").innerHTML = "2017年2月:" + getMonthDays("2017", "2") +"天";
      
    };
</script>



请按照自己的理解订正对概念的认知

代码说明(秀智商){:10_256:} :
**** Hidden Message *****



回顾:

技法78 (◐‿◑) 获取日期的任意部分



源代码:



○面试题索引贴●
如果喜欢,请订阅{:10_303:} :
HTML5 - 庖丁解牛 + JavaScript - 庖丁解牛


如果喜欢,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

楠条绘希 发表于 2017-11-21 21:30:15

希望自己能有智商{:5_91:}

mhb789456 发表于 2018-7-17 17:46:42

查看一下

Romeo 发表于 2018-8-6 20:09:36

{:10_327:}

凌乱大帅比 发表于 2018-9-18 10:00:41

8639638

a211827754 发表于 2018-9-20 16:25:33

没看懂啊

a211827754 发表于 2018-9-20 16:28:11

a211827754 发表于 2018-9-20 16:25
没看懂啊

看懂了 这道题和你的 dataFormate() 没关系啊

wangdxf 发表于 2019-4-9 12:57:11

{:5_102:}

287187056 发表于 2020-4-3 16:20:32

peanutfs13 发表于 2023-9-22 15:34:17

1

孙忠亮 发表于 2023-11-13 14:08:35

1
页: [1]
查看完整版本: 技法79 (◐‿◑) 获得指定月份的天数