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

时间: 作者:admin 浏览:

在项目中经常会使用到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()方法

/*
author: meizz
对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){
    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;
}
微信公众号
微信公众号:
  • 前端全栈之路(微信群)
前端QQ交流群
前端QQ交流群:
  • 794324979
  • 734802480(已满)

更多文章

栏目文章


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