一个方法包你搞定万年历

关于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的日历模板即可,传入该方法年月日,就妥妥的;

时间: 2024-10-28 20:53:06

一个方法包你搞定万年历的相关文章

Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql&#39;。网上找了一些方法,终于搞定了。

转载:http://blog.csdn.net/lilian129/article/details/9297881 这几天用空密码登录mysql后,然后修改mysql默认密码,使用mysql表出现过这个问题,提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'.网上找了一些方法,终于搞定了. 我用的是xampp集成的mysql,之前空密码能登进去phpmyadmin,但怎么也进不去phpm

PDF怎么旋转,这个方法教你搞定

在工作的时候,当我们拿到文件的时候,会发现有很多都不是完整的,特别是当你拿到PDF文件的时候发现,PDF文件里面的内容是反的,需要旋转一下才能使用,这时候很多小伙伴们会很头疼,因为PDF文件本身就是很难进行编辑和修改的,那么PDF怎么旋转?下面就来告诉你吧,这个方法教你搞定.下面给大家介绍一款PDF转换器软件,能快速方便的旋转PDF文件中的一页或多页并保存成新的文档,简单.高效.一键操作,快速.方便.1.下面给大家分享的方法,就是使用软件来完成的,这个软件不仅可以旋转PDF文件,还可以进行PDF

封装一个工具类,搞定图片批量下载

项目中用到的,要求一次下载30张图片.开始时使用谷歌bitmap fun中提供的ImageFetcher来下载,但是发现一个蛋疼无比现象,图片总是莫名其妙的少几张. 排除了图片地址存在无效链接外,怀疑是并发下载线程个数太多,线程池满了以后,使用抛弃策略将以前的下载线程抛弃了. 求人不如求己,自己写一个吧. 在这里使用线程池,支持并发下载.线程池可以自己选择,使用newSingleThreadExecutor,newFixedThreadPool,newCachedThreadPool中的任意一种

CAD图纸转换成高质量的PDF文件,两种方法一步搞定哦

其实提到CAD,可能大家都大致的了解,CAD现在已经是建筑行业运用的非常广泛的一个设计软件了,其实CAD就是一种计算机辅助软件,可以高效的帮助我们进行图纸的绘制.我们一般在设计完图纸,可能定会转换格式,以至于可以方便的进行工作,PDF文件刚好有着很好的加密性,用起来方便快捷,真的是省时又省力.那接下来,就给大家看一下,怎么用两种方法,快速将CAD图纸文件转换成高质量的PDF文件吧. 第一步:首先,在你的电脑桌面上双击鼠标左键,开始运行CAD转换器.并在软件的下方界面中找到[CAD转PDF]功能属

如何将PDF转Excel表格?俩种方法三秒搞定

大家在日常办公中会不会遇到这类问题呢,关于如何将PDF转Excel表格的问题,前阵子有几个小伙伴给我留言问到的问题,今天正好可以这里回复一下方法,希望可以帮助到你们哟~这次发个福利,分享俩种,机会不容错过,一起看下吧!No.1复制粘贴到Excel第一步.首先我们将已准备好的PDF文件打开,并复制内容.第二步.新建一个Excel表格,将内容粘贴进去,如图所示,然后进行编辑调整成自己想要的排版.No.2直接转换格式第一步.打开一个这样的含有PDF转Excel转换功能的转换器.(这里使用的是在线转换器

只需一句话就能搞定NVelocity模板引擎,源码+解析+文档+资料+注释

好长时间不发技术方面的动态了,今天无聊就发篇关于NVelocity的技术文章吧,这门技术来源于java开源项目Velocity,比较好用,其他的我也不过多介绍了,没听过的在文章末尾会有介绍,下面我们就实战吧~ 咱们直接上最简单的方法,一句话搞定: DNTNvelocityHelper.NvelocityTemplate(context.Request.MapPath("~/NVelocity/templates/"), context, "Templater_index.dn

1键搞定HTTPS

沃通(WoSign)于2015年8月13日正式发布了SSL精灵(SSL Wizard),一个让您一键搞定https的全自动化服务器证书申请和部署工具,彻底解决多年来困扰用户的证书申请麻烦和证书安装繁琐的问题,必将为推动全球所有的网站都使用HTTPS加密传输,保护网上用户隐私安全做出具有历史意义的巨大贡献. 任何一个经历过部署网站证书HTTPS的人都知道,申请和部署一张SSL证书是相当繁琐和漫长的一个过程,枯燥无味的部署指南.非常容易出错的命令.复杂的编辑配置等等,这一切将成为历史!沃通SSL精灵

iOS之下拉放大,上推缩小,一个方法搞定

先来看看效果吧. 讲讲大概的实现思路:1?创建头部的视图和tableview,需要注意的是tableview要设置contentInset,contentInsent 的顶部要和头部视图的背景图的高度一样,否则会有空隙(或是有遮挡).myTableView.contentInset = UIEdgeInsetsMake(headRect.size.height-navHeight-navHeight, 0, 0, 0);2?对头部视图的背景图片的尺寸进行处理,当然,你也可以直接找一个适合尺寸的图

高逼格,超简单,实现App自动更新,一个方法搞定

前言 前段时间写了一个篇APP自动更新下载的文章自动更新,一个方法搞定,使用系统的DownloadManager 方法超简洁的实现了apk的下载,不过有好多网友反映有一些机型上面这个方法无法实现下载,经过小编的实验在部分机型上确实会有这个问题,所以其中下载的部分只能通过其它方法搞定了.正好看到网上好多关于使用Retrofit实现下载并且监听进度的文章,并且我一直在看Retrofit的东西但是一直没有机会用到,所以我正好拿这个练练手,最终我使用Retrofit + OkHttp + RxBus +