1.首先取得处理月的总天数 JS不提供此参数,我们需要计算。考虑到闰年问题会影响二月份的天数,我们先编写一个判断闰年的自编函数:
//判断是否为闰年 function is_leap(year) { //闰年的条件是符合下面二者之一: //(1)年份能被4整除,但不能被100整除; //(2)年份能被400整除。 if((year%4==0 && year%100!=0)||(year%400==0)){ return 1; } return 0; }
2.十二个月内的月份总天数的数组:
days_of_month = new Array(31, 28+is_leap(fullYear), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
3.计算处理月第一天是星期几
date=new Date(2008, 3, 1); week=date.getDay();
4.解决 日期显示 行数问题
rows=Math.ceil((days_of_month[month] + week) / 7);
5. 总的来说用到的参数
//判断是否为闰年 function is_leap(year) { //闰年的条件是符合下面二者之一: //(1)年份能被4整除,但不能被100整除; //(2)年份能被400整除。 if((year%4==0 && year%100!=0)||(year%400==0)){ return 1; } return 0; } //var date = new Date(2013, 1, 4); //特定Date资讯 var date = new Date(); //当前Date资讯 var fullYear = date.getFullYear(); //获取年份 var month = date.getMonth(); //获取月份,返回值是0(一月)到11(十二月)之间的一个整数。 var date_of_month = date.getDate(); //获取日期,返回值是1~31之间的一个整数 var first_date = new Date(fullYear, month, 1); //获取当前月第一天Date资讯 //返回date对象星期中的一天,此值为0(周日)-6(周六)之间的一个整数 var week = first_date.getDay(); //获取当前月第一天是星期几 var days_of_month = new Array(31, 28+is_leap(fullYear), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); //各月份的总天数 var rows = Math.ceil((days_of_month[month] + week) / 7); //表格所需要行数
转载自:https://www.cnblogs.com/linjiqin/p/3564883.html 感谢!
组件化请参看:https://www.jianshu.com/p/0831d6035e7b