需求

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