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;
}
用法:
核心逻辑就是:获取当月的数据,同时返回上个月的最后一天毫秒数,以及下个月的第一天毫秒数,这样就很容易关联到上个月和下个月了。
-
设置个全局的monthMap,存储数据;
-
设置个全局的monthText,显示数据;
-
获取当月数据:
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 阅读(2443) 评论(0) 编辑 收藏 举报