js月份的计算公式_知道年月份怎么获取这个月的第一天和最后一天?js

在项目中很多时候都要用到fullCalendar或者Calendar日期插件搭配一些事件完成一些功能,特别是翻页时很多时候要获取当前月的第一天和最后一天传参来取数据;所以需要一个获取某个月份的第一天和最后一天的方法;

之前写了一个方法是去遍历插件的所有天然后获取第一个和最后一个的日期就可以,这个思路确实可以解决问题,不过总感觉不太灵活;

所以翻查资料之后有了一个新思路,那就是通过下一个月的第一天减去一天则得到当前月的最后一天;具体方法如下:

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") ==> 2018-07-02 08:09:04.423

// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2018-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;

}

调用:

var time1 = new Date().Format("yyyy-MM-dd");

var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值