JS-获取每月有几周,根据年月周获取该周从周一到周日的日期等方法
//获取每月有几周(注:从第一个周一开始算该月第一周)
function getWeeks(year, month) {
var d = new Date();
// 该月第一天
d.setFullYear(year, month - 1, 1);
var w1 = d.getDay();
if (w1 == 0) w1 = 7;
// 该月天数
d.setFullYear(year, month, 0);
var dd = d.getDate();
// 第一个周一
let d1;
if (w1 != 1) d1 = 7 - w1 + 2;
else d1 = 1;
let week_count = Math.ceil((dd - d1 + 1) / 7);
return week_count;
}
//根据年月周获取该周从周一到周日的日期
function getWeekTime(year, month, weekday) {
var d = new Date();
// 该月第一天
d.setFullYear(year, month - 1, 1);
var w1 = d.getDay();
if (w1 == 0) w1 = 7;
// 该月天数
d.setFullYear(year, month, 0);
var dd = d.getDate();
// 第一个周一
let d1;
if (w1 != 1) d1 = 7 - w1 + 2;
else d1 = 1;
var monday = d1 + (weekday - 1) * 7;
var sunday = monday + 6;
var from = year + "-" + month + "-" + monday;
var to;
if (sunday <= dd) {
to = year + "-" + month + "-" + sunday;
} else {
d.setFullYear(year, month - 1, sunday);
let days = d.getDate();
to = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + days;
}
console.log(weekday + " 从" + from + " 到 " + to + "");
}
//获取每月第几周的周一的日期
function getMondayTime(year, month, weekday) {
var d = new Date();
// 该月第一天
d.setFullYear(year, month - 1, 1);
var w1 = d.getDay();
if (w1 == 0) w1 = 7;
// 该月天数
d.setFullYear(year, month, 0);
var dd = d.getDate();
// 第一个周一
let d1;
if (w1 != 1) d1 = 7 - w1 + 2;
else d1 = 1;
var monday = d1 + (weekday - 1) * 7;
return monday;
}
//获取周一的日期
function getMonDate() {
var d = new Date(),
day = d.getDay(),
date = d.getDate();
if (day == 1) return d;
if (day == 0) d.setDate(date - 6);
else d.setDate(date - day + 1);
return d;
}
//获得周期名字
function getDayName(day) {
var day = parseInt(day);
if (isNaN(day) || day < 0 || day > 6) return false;
var weekday = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
return weekday[day];
}
//获得当前日期在当月第几周
//不包括跟上个月重合的部分
function getMonthWeek(a, b, c) {
var date = new Date(a, parseInt(b) - 1, c),
w = date.getDay(),
d = date.getDate();
return Math.ceil((d + 6 - w) / 7);
}
//获取当月最后一天日期
function getLastDay(year, month) {
var new_year = year; //取当前的年份
var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定)
if (month > 12) {
new_month -= 12; //月份减
new_year++; //年份增
}
var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天
return (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate(); //获取当月最后一天日期
}
//根据当前日期获取该天所在周,若该月1号不是周一,获取该月第一周的周一日期,小于该日期的归为上个月最后一周
//当前日期几月第几周
function showDate() {
var that = this;
var d = this.getMonDate();
var ds = new Date();
var arr = [];
for (var i = 0; i < 7; i++) {
let weekDay = this.getDayName(d.getDay());
let date = d.getDate() + '日';
if (weekDay == '周一') {
let beginTime = ds.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
that.state.beginTime = beginTime;
}
if (weekDay == '周日') {
let endTime = ds.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
that.state.endTime = endTime;
}
arr.push({
weekDay: weekDay,
date: date
});
d.setDate(d.getDate() + 1);
}
let month = ds.getMonth() + 1;
let weeks = this.getMonthWeek(ds.getFullYear(), month, ds.getDate()) - 1;
//每月周一日期
let oneDate = that.getMondayTime(ds.getFullYear(), month, 1);
if (ds.getDate() < oneDate) {
month = ds.getMonth();
weeks = this.getWeeks(ds.getFullYear(), month);
}
console.log('month:', month, 'weeks:', weeks);
this.setState({
list: arr,
yearDate: ds.getFullYear(),
monthDate: month,
month: ds.getMonth() + 1,
monthWeek: '第' + weeks + '周',
theMonthWeek: '第' + weeks + '周'
});
}
原文来源于:https://www.cnblogs.com/guohu/p/11795735.html

浙公网安备 33010602011771号