javascript : 获取当前月、下个月、上个月最后一天、下个月第一天

需求

初始化显示当前月,格式yyyy.mm,例如:2021.02;
点击左边,显示上一个月;
点击右边,显示下一个月。

实现

代码:**

getMonth : function(date){
	var year = date.getFullYear();
	var month = date.getMonth()+1;
	var day = date.getDate();
	if(month<10){
		month = "0"+month;
	}
	// 组装当月第一天的字符串
	var str = year+"-"+month+"-01 00:00:00";
	var firstDateTime = new Date(str).getTime();
	// 获取上个月最后一天的毫秒数
	var last = new Date(firstDateTime-1*24*60*60*1000).getTime();
	var m = date.getMonth()+2;
	var y = year;
	if(m>12){
		m = 1;
		y = y +1;
	}
	var str2 = y+"-"+m+"-01 00:00:00";
	// 获取下个月第一天的毫秒数
	var next = new Date(str2).getTime();
	// 组装需要的字符串
	var text = year+"."+month;
	// 组装返回值
	var map = new Map();
	map["date"] = firstDateTime; // 当前月第一天的毫秒数
	map["text"] = text; // 当前月的字符串
	map["last"] = last; // 上个月最后一天的毫秒数
	map["next"] = next; // 下个月第一天的毫秒数
	return map;
}

用法:

核心逻辑就是:获取当月的数据,同时返回上个月的最后一天毫秒数,以及下个月的第一天毫秒数,这样就很容易关联到上个月和下个月了。

  1. 设置个全局的monthMap,存储数据;

  2. 设置个全局的monthText,显示数据;

  3. 获取当月数据:
    monthMap = getMonth(new Date())
    monthText = monthMap["text"]

4.获取上个月数据
// 首先获取上个月的最后一天的毫秒数
var time = monthMap["last"];
monthMap = getMonth(new Date(time));
monthText = monthMap["text"]

5.获取下个月数据
和第4点一样,只不过把last换成next.

posted on 2022-03-16 16:42  northwest  阅读(2153)  评论(0编辑  收藏  举报

导航