内容字号: 默认 大号 超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到宋体切换到微软雅黑

fullCalendar日历插件如何获取当前月的第一天和最后一天?js插件

发布:2018-04-03 浏览: 评论(
在项目中经常会使用到fullCalendar来获取日历信息,有时候需要按月取得当前显示月份的相关数据,那么我们就要获取当前月的第一天和最后一天,那怎么取得这两个日期?上代码:


1、直接遍历得到

//获得当前月份的第一天和最后一天
//返回数组['2017-11-01','2017-11-30']
//记得把departure-schedule-content替换成你们自己的
function GetFirstLastDate(){
    var monthStart="";
    var monthEnd="";
    var MonthLength=$(".departure-schedule-content .fc-border-separate tbody tr.fc-week td.fc-day").not(".fc-other-month").length;
    $(".departure-schedule-content .fc-border-separate tbody tr.fc-week td.fc-day").not(".fc-other-month").each(function(i){
        if(i==0){
            monthStart=$(this).attr("data-date").replace(/[-]/g,"/");
        }
        if(i==MonthLength-1){
            monthEnd=$(this).attr("data-date").replace(/[-]/g,"/");
        }
    });
    return [monthStart,monthEnd];
}

其实方法一最基本的思想就是去遍历当前月的所有日期,取第一个和最后一个元素即是第一天和最后一天的日期;

2、但其实有一种更好、更适用的方法,如下

//这个方法的核心思路是通过下个月的第一天减去一天得到这个月的最后一天


function getMonthFirstLastDay(year,month){
    var firstDay=new Date(year,month-1,1);//这个月的第一天
    var currentMonth=firstDay.getMonth(); //取得月份数
    var nextMonthFirstDay=new Date(firstDay.getFullYear(),currentMonth+1,1);//加1获取下个月第一天
    var dis=nextMonthFirstDay.getTime()-24*60*60*1000;//减去一天就是这个月的最后一天
    var lastDay=new Date(dis);
    firstDay=firstDay.Format("yyyy/MM/dd");//格式化这个格式化方法要用你们自己的,也可以用本文已经贴出来的下面的Format
    lastDay=lastDay.Format("yyyy/MM/dd");//格式化

    return [firstDay,lastDay];
}

//看看这种写法会不会更好点
function getMonthFirstLastDay(year,month){
    var firstDay=new Date(year,month-1,1);//这个月的第一天
    var currentMonth=firstDay.getMonth(); //取得月份数
    var lastDay=new Date(firstDay.getFullYear(),currentMonth+1,0);//是0而不是-1
    firstDay=firstDay.Format("yyyy/MM/dd");//格式化
    lastDay=lastDay.Format("yyyy/MM/dd");//格式化

    return [firstDay,lastDay];
}


//例子1:

console.log(getMonthFirstLastDay(2018,01));

//输出结果是:
["2018/01/01", "2018/01/31"]


//例子2:
console.log(getMonthFirstLastDay(2018,13));

//输出结果是: 
["2019/01/01","2019/01/31"] 

//以上是我自己的写法,明白思路之后你也可以自己写,写法可以不同; 


 //日期格式化方法Format()方法 
// 对Date的扩展,将 Date 转化为指定格式的String 
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function(fmt) 
{ //author: meizz 
  var o = { 
    "M+" : this.getMonth()+1,                 //月份 
    "d+" : this.getDate(),                    //日 
    "h+" : this.getHours(),                   //小时 
    "m+" : this.getMinutes(),                 //分 
    "s+" : this.getSeconds(),                 //秒 
    "q+" : Math.floor((this.getMonth()+3)/3), //季度 
    "S"  : this.getMilliseconds()             //毫秒 
  }; 
  if(/(y+)/.test(fmt)) 
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
  for(var k in o) 
    if(new RegExp("("+ k +")").test(fmt)) 
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 
  return fmt; 
}
前端新手交流群
欢迎加入web前端新手交流qq群:734802480

更多文章

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。


Copyright © 2014-2019 seozhijia.net 版权所有-粤ICP备13087626号-4