码迷,mamicode.com
首页 > 其他好文 > 详细

一个方法包你搞定万年历

时间:2016-05-25 01:52:42      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

关于JavaScript的日历组件,网上百度一大堆,Bootstrap的Daterpicker比较全面,比较不错;不过要用上的话,依赖文件比较多,我有些代码洁癖的,so,我得研究研究到底用不用;

经研究发现,万年历,无论要怎么切换,归根到底其实就是一个方法的事,抱着积极的码农乐观主义精神,我必须和大家分享下;只要这一个方法,包你能扩展出你想要的、百度得到的各种日历组件;

少废话了,上代码:

 1 function Dater(y,m,d) {
 2             var date=new Date();
 3             var y=y||date.getFullYear(),
 4                 m=m||date.getMonth()+1,
 5                 d=d||date.getDate();
 6             var isLeapYear=function(years){
 7                 return  (years % 4 == 0 && years % 100 != 0) || (years % 400 == 0)?true:false;
 8             }
 9             var getFirstDay=function(y,m,d){
10                 var d=new Date(y,m,d);
11                 d.setDate(1);
12                 return d.getDay();
13             }
14             var getMonthDay=[31,isLeapYear(y)?29:28,31,30,31,30,31,31,30,31,30,31];
15             var prem=[],im=[],nextm=[],lastmd=getMonthDay[m-1-1];
16 
17             if (getFirstDay(y,m-1,d)==0) {
18                 for (var i = 6; i >=0; i--) {
19                     prem[6-i]=lastmd-i;
20                 }
21             }else {
22                 for (var i = getFirstDay(y,m-1,d); i >0; i--) {
23                     prem[getFirstDay(y,m-1,d)-i]=lastmd-i+1;
24                 }
25             }
26             for (var i = 0; i < getMonthDay[m-1]; i++) {
27                 im[i]=i+1;
28             }
29             var nextlen=42-(prem.length+getMonthDay[m-1]);
30             for (var i = 0; i < nextlen; i++) {
31                 nextm[i]=i+1;
32             }
33             this.monthDays={
34                 preMonthDays:prem,
35                 thisMonthDays:im,
36                 nextMonthDays:nextm
37             }
38         };
39         console.log(new Dater(2015,2,1).monthDays);

 

纯纯的JavaScript,无任何依赖;

可能大家看出来了,这尼玛返回了三个数组,和日历毛关系啊;不要急,把这三个数组拼起来,点一下你电脑右下角的时间,对着看下就知道了;是不是能对应上了?

然后你可以随便自定义样式,各种切换什么的,只需要循环一个6*7的日历模板即可,传入该方法年月日,就妥妥的;

一个方法包你搞定万年历

标签:

原文地址:http://www.cnblogs.com/hufeng/p/5525588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!