月份开始和结束
整体不是很复杂,使用new Date()方法自带获取最后一天的时间
new Date(a,b,c),传递参数
参数a:是要获取的年份
参数b:是要获取的月份
参数c:是要获取的日期
传递日期为0时获取的传递月份的上月最后一天
时间月份是从0开始算起11结束,所以每次获取月份要加一;也就是当你传递的五月也就是六月,获取开始日期就要减一才能拿到对照日期
例如:
let date = new Date(2022,5,0);
console.log(data.getFullYear() + "-" +(data.getMonth()+1)+ "-" +data.getDate());//2022-4-30
// 查询月份开始结束
//开始日期
function getFirstDayOfMonth(year, month) {
// return new Date(year, month-1, 1);
let data = new Date(year, month - 1, 1);
return (
data.getFullYear() +
"-" +
(data.getMonth() + 1 > 9
? data.getMonth() + 1
: "0" + (data.getMonth() + 1)) +
"-" +
(data.getDate() > 9 ? data.getDate() : "0" + data.getDate())
);
}
//结束日期
function getLastDayOfMonth(year, month) {
let data = new Date(year, month, 0);
return (
data.getFullYear() +
"-" +
(data.getMonth() + 1 > 9
? data.getMonth() + 1
: "0" + (data.getMonth() + 1)) +
"-" +
(data.getDate() > 9 ? data.getDate() : "0" + data.getDate())
);
}
function test1(){
//示例
println('2018年5月:' + getFirstDayOfMonth(2018,5) + ',' + getLastDayOfMonth(2018,5));
}
PS:以上范文参考原文:https://blog.csdn.net/weixin_61079989/article/details/125946311 未亲测,但逻辑颇正。
以下记录另外一种写法(亲测):
由于最近在写Ts的项目,所以将另外一种方法以及Ts代码附上,留作备份:
Js代码:
//获取时间 传入范例:2023-05
getDateTime(e) {
let timeArr = e..split('-')
let year = parseInt(timeArr[0])
let month = parseInt(timeArr[1])
this.setData({
showTime: `${year}年${month}月`
})
let date = new Date(year, month, 0);
//月份减1
let start_time = new Date(year, month - 1, 1).valueOf() / 1000;
let end_time = new Date(year, month - 1, date.getDate()).valueOf() / 1000 + 24 * 60 * 60;
this.setData({
start_time,
end_time
})
}
这里返回的是开始时间戳以及结束时间戳
以下是Ts范例(返回的是两个日期,月份第一天、最后一天):
传入范例:2023-05
const getMonthToDateRange = (yearMonth: any) => {
const timeArr = yearMonth.split('-');
const year = parseInt(timeArr[0], 10);
const month = parseInt(timeArr[1], 10);
const date = new Date(year, month, 0);
// 月份减1
// eslint-disable-next-line camelcase
const start_time = new Date(year, month - 1, 1).valueOf() / 1000;
// eslint-disable-next-line camelcase
const end_time =
new Date(year, month - 1, date.getDate()).valueOf() / 1000 +
24 * 60 * 60 -
86400;
// eslint-disable-next-line camelcase
const startTimeN = new Date(start_time * 1000);
// eslint-disable-next-line camelcase
const endTimeN = new Date(end_time * 1000);
const startDate = `${startTimeN.getFullYear()}-${
startTimeN.getMonth() + 1
}-${startTimeN.getDate()}`;
const endDate = `${endTimeN.getFullYear()}-${
endTimeN.getMonth() + 1
}-${endTimeN.getDate()}`;
// eslint-disable-next-line camelcase
return [startDate, endDate];
};