参考博客:slom_fxt_工作中的积累,java基础,JavaScript高级-CSDN博客
一、今天、昨天、明天日期
function getDate(dates) {
let dd = new Date();
let n = dates || 0;
dd.setDate(dd.getDate() + n);
let y = dd.getFullYear();
let m = dd.getMonth() + 1;
let d = dd.getDate();
m = m < 10 ? "0" + m: m;
d = d < 10 ? "0" + d: d;
let day = y + "-" + m + "-" + d;
return day;/返回yyyy-mm-dd格式日期
};
//dates为数字类型,0代表今日,-1代表昨日,1代表明日
/dates不传默认代表今日。
getDate(dates)
二、本周、上周、下周的开始、结束日期
function getMonday(type, dates) {
let now = new Date();
let nowTime = now.getTime();
let day = now.getDay();
let longTime = 24 * 60 * 60 * 1000;
let n = longTime * 7 * (dates || 0);
if (type == "s") {
let dd = nowTime - (day - 1) * longTime + n;
};
if (type == "e") {
let dd = nowTime + (7 - day) * longTime + n;
};
dd = new Date(dd);
let y = dd.getFullYear();
let m = dd.getMonth() + 1;
let d = dd.getDate();
m = m < 10 ? "0" + m: m;
d = d < 10 ? "0" + d: d;
let day = y + "-" + m + "-" + d;
return day;
};
//type为字符串类型,有两种选择,"s"代表开始,"e"代表结束,
//dates为数字类型,不传或0代表本周,-1代表上周,1代表下周
getMonday(type,dates)
getMonday("s",1) //得到下周一的yyyy-mm-dd格式日期
getMonday("e",1) //得到下周日的yyyy-mm-dd格式日期
三、本月、上月、下月的开始、结束日期
function getMonth(type, months) {
let d = new Date();
let year = d.getFullYear();
let month = d.getMonth() + 1;
if (Math.abs(months) > 12) {
months = months % 12;
};
if (months != 0) {
if (month + months > 12) {
year++;
month = (month + months) % 12;
} else if (month + months < 1) {
year--;
month = 12 + month + months;
} else {
month = month + months;
};
};
month = month < 10 ? "0" + month: month;
let date = d.getDate();
let firstday = year + "-" + month + "-" + "01";
let lastday = "";
if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
lastday = year + "-" + month + "-" + 31;
} else if (month == "02") {
if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
lastday = year + "-" + month + "-" + 29;
} else {
lastday = year + "-" + month + "-" + 28;
};
} else {
lastday = year + "-" + month + "-" + 30;
};
let day = "";
if (type == "s") {
day = firstday;
} else {
day = lastday;
};
return day;
};
//type为字符串类型,有两种选择,"s"代表开始,"e"代表结束,
//months为数字类型,不传或0代表本月,-1代表上月,1代表下月
getMonth(type,months)
getMonth("s",1) //得到下月第一天的yyyy-mm-dd格式日期
getMonth("e",1) //得到下月最后一天的yyyy-mm-dd格式日期
四、今年、去年、明年的开始、结束日期
function getYear(type, dates) {
let dd = new Date();
let n = dates || 0;
let year = dd.getFullYear() + Number(n);
if (type == "s") {
let day = year + "-01-01";
};
if (type == "e") {
let day = year + "-12-31";
};
if (!type) {
let day = year + "-01-01/" + year + "-12-31";
};
return day;
};
//type为字符串类型,有两种选择,"s"代表开始,"e"代表结束
//dates为数字类型,不传或0代表今年,-1代表去年,1代表明年
getYear(type,dates)
getYear("s",1) //得到明年第一天的yyyy-mm-dd格式日期
getYear("e",1) //得到明年最后一天的yyyy-mm-dd格式日期
五、指定年月的开始和结束日期
输入年份
function getYearDates(year) {
const startDate = new Date(year, 0, 2);
const endDate = new Date(year, 11, 32);
return {
start: startDate.toISOString().split('T')[0],
end: endDate.toISOString().split('T')[0]
};
}
getYearDates(2023)//{start: '2023-01-01', end: '2023-12-31'}
输入年份和月份
function getMonthDates(year, month) {
const startDate = new Date(year, month-1, 2);
const endDate = new Date(year, month, 1);
return {
start: startDate.toISOString().split('T')[0],
end: endDate.toISOString().split('T')[0]
};
}
getMonthDates(2023,5)//{start: '2023-05-01', end: '2023-05-31'}