JS 获取指定日期所在(周或月)第一天和最后一天
setDate() 方法用于设置一个月的某一天。setDate(N) N为(0-31)代表这个月的第N天 结果为数值型,,如果当月有 31 天:32 为下个月的第一天如果当月有 30 天:32 为下一个月的第二天指定日期 第一天var date=new date()new Date(date.setDate(1))指定日期最后一天setDate()参数为0时代表上个月的最后一天,所以在获取指定日期
·
1.日期所在周第一天最后一天
注意:getDay返回值为0(周日) 到 6(周六) 之间的一个整数
let date=new Date()
//本周第一天
let start=new Date(date.getTime() - (3600 * 1000 * 24 * (date.getDay() == 0 ? 6 : date.getDay()-1)))
//本周最后一天
let end=new Date(date.getTime()+(3600*1000*24* (date.getDay()==0 ? 0:7- date.getDay())))
console.log(start,end)
//封装示例
function getDate(dateString) {
const date = new Date(dateString);
const week = date.getDay(); // 0-6,0 表示星期日,
const offset = week === 0 ? -6 : 1; // 如果日期是星期日,-6,否则为 1
const startTime = new Date(date.getTime() - (week - 1) * 24 * 60 * 60 * 1000);
const endTime = new Date(date.getTime() + (7 - week) * 24 * 60 * 60 * 1000);
return {
startTime: startTime.toLocaleDateString(),
endTime: endTime.toLocaleDateString()
};
}
let{ startTime, endTime } = getDate(new Date());
console.log('周一:', startTime);
console.log('周日:', endTime);
2.日期所在月第一天,最后一天
setDate() 方法用于设置一个月的某一天并返回毫秒。
setDate(N) N为(0-31)代表这个月的第N天 结果为数值型,如果当月有 31 天:32 为下个月的第一天,如果当月有 30 天:32 为下一个月的第二天。
setDate()参数为0时代表上个月的最后一天,所以在获取指定日期所在月最后一个天时,需要将日期所在月份加+1。
const date = new Date()
const start = date.setDate(1); //本月第一天
const end = new Date(date.getFullYear(), date.getMonth() + 1, 0)//本月的最后一天
例子:指定日期 所在月第一天,最后一天
当前时间Tue May 31 2022 09:05:05 GMT+0800 (中国标准时间)
var date=new Date()
new Date(date.setDate(1))
运行结果Sun May 01 2022 09:05:05 GMT+0800 (中国标准时间)
new Date(new Date(date.getfullYear(),date.getMonth()+1,1).setDate(0))
运行结果Tue May 31 2022 00:00:00 GMT+0800 (中国标准时间)
更多推荐
已为社区贡献1条内容
所有评论(0)