JS获取上周(自然周、最近七天)、上月(自然月、最近一个月)、全年的开始和结束日期

JS获取上周(自然周、最近七天)、上月(自然月、最近一个月)、全年的开始和结束日期

let now = new Date(); 
let nowTime = now.getTime(); //当前的时间戳
let nowYear = now.getFullYear(); //当前年
let weekDay = now.getDay(); //当前星期
let lastMonth = now.getMonth(); //上一个月
let oneDayTime = 24 * 3600* 1000; //一天的总毫秒数
let start = "";  //开始日期
let end = "";  //结束日期
let myDate  = []  //最终需要的日期数组 [开始,结束]

// 1. 上周(最近七天)
let week = nowTime - oneDayTime * 7;  // oneDayTime * 7 代表一周的总毫秒(ms)数
start = now.setTime(week);
end = new Date();
myDate = [formatDate(start), formatDate(end)];
//console.log(myDate , "最近七天");

// 2. 上周(自然周:周一到周日)
start = nowTime - (weekDay + 6) * oneDayTime; //上周一的时间戳
end = nowTime - (weekDay + 0) * oneDayTime; //上周日的时间戳
myDate = [formatDate(start), formatDate(end)];
//console.log(myDate , "自然周-上周");

// 3. 上月(最近一个月) 
let mouth = nowTime - oneDayTime * 30;  //oneDayTime * 30 代表一个月的总毫秒数
start = now.setTime(mouth);
end = new Date();
myDate = [formatDate(start), formatDate(end)];
//console.log(myDate, "最近一个月");

// 4. 上月(自然月: 每月1号到月末)
/*
	*知识补充: new Date()第3个参数默认为1,就是每个月的1号; 当该参数为0 时,就是每个月的最后一天;
	*如:获取2022年一月份的天数:  new Date("2022","01",0).getDate()  //通过getDate()方法得到该月的天数,即31
*/
start = new Date(nowYear, lastMonth - 1, 1); //上一个月的第一天日期
end = new Date(nowYear, lastMonth, 0); //上一月的最后一天日期
myDate = [formatDate(start), formatDate(end)];
//console.log(myDate, "自然月-上月");

//格式化日期函数(最终格式yyyy-MM-dd)
function formatDate(date) {
  let myDate = new Date(date);
  let year = myDate.getFullYear();
  let month = myDate.getMonth() + 1;
  let weekday = myDate.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (weekday < 10) {
    weekday = "0" + weekday;
  }
  return year + "-" + month + "-" + weekday;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值