某年的第几个月或第几个周换算为具体的日期 – vue
2020年的第2月:
输出为:
2020第8周
换算为:
代码如下:
// 获取统计周期范围
getDayFanWei(year, weekOrMonth, type) {
if (weekOrMonth != "") {
let startDate = '';
let endDate = '';
if (type == 1) {
let day = 7 * (weekOrMonth - 1);
// 那一年第一天是星期几
let firstDay = new Date(year + "-01-01");
let yearFirstDay = firstDay.getDay() || 7;
if (yearFirstDay == 1) {
startDate = this.dateAddDays(year + "-01-01", day);
endDate = this.dateAddDays(year + "-01-01", day + 6);
}
else {
day = day + (8 - yearFirstDay);
startDate = this.dateAddDays(year + "-01-01", day);
endDate = this.dateAddDays(year + "-01-01", day + 6);
}
} else {
if (weekOrMonth < 10) {
startDate = year + "-0" + weekOrMonth + "-01";
}
else {
startDate = year + "-" + weekOrMonth + "-01";
}
let dateC = new Date(year + "-" + weekOrMonth + "-01");
// 获取天数
let days = new Date(year, weekOrMonth, 0).getDate();
if (days < 10) {
days = "0" + days;
}
if (weekOrMonth < 10) {
weekOrMonth = "0" + weekOrMonth;
}
endDate = year + "-" + weekOrMonth + "-" + days;
}
return startDate + "~" + endDate ;
// return startDate + " 00:00:00~" + endDate + " 23:59:59";
}
},
dateAddDays(dataStr, dayCount) {
let strdate = dataStr; // 日期字符串
let isdate = new Date(strdate.replace(/-/g, "/")); // 把日期字符串转换成日期格式
isdate = new Date((isdate / 1000 + (86400 * dayCount)) * 1000); // 日期加1天
let month = isdate.getMonth() + 1;
let day = isdate.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
let pdate = isdate.getFullYear() + "-" + month + "-" + day; // 把日期格式转换成字符串
return pdate;
},
调用:
// year:年份;monthFirst:开始时间; statisticType:0(月),1(周)
const startTimeStr = this.getDayFanWei(this.year,
this.monthFirst, this.statisticType);
const endTimeStr = this.getDayFanWei(this.year,
this.monthEnd, this.statisticType);
statisticBeginTime = startTimeStr.split('~')[ 0 ], // 开始时间
statisticEndTime = endTimeStr.split('~')[ 1 ], // 结束时间