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

大标 2022年3月16日17:09:33
评论
35

需求

初始化显示当前月,格式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.

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月16日17:09:33
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/js-jquery/4896.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: