JS获取上个月,上个周

本文记录了在JavaScript中如何获取上个月和上个周的具体日期,包括处理不同月份天数的逻辑和利用Date对象计算上周日期的方法,适用于小程序数据统计场景。
摘要由CSDN通过智能技术生成

最近公司有个需求要做小程序的数据统计,但是对于微信的数据统计,月统计传入的值只能是自然月第一天到最后一天,周统计传入的值为周一至周日的具体日期,最开始写的时候以为很简单,后来发现里面坑还是挺多的,写出来记录一下

获取上个月

首先,我们先定义一个函数function getOldMonth(){},接下来我们进行分析,需要用到哪些东西。
首先,我们需要的格式是类似yyyymmdd这样的格式,所以我们需要定义几个变量,分别是年份,月份,天,我们还需要大月份的集合,以及是否闰年的判断:

let year = new Date().getFullYear(),
    month = new Date().getMonth(),
    day = new Date().getDate(),
    hasLeap = year % 4 === 0 && year % 100 !== 0 || year % 400 === 0,
    bigMonthList = [1, 3, 5, 7, 8, 10, 12];  //大月份的数组

这里的年份由于getMonth()这个方法是从0开始的,所以我们直接拿到了上个月份的数值,但还需要对1月份进行特殊处理,因为1月份的上一个月是去年的12份,所以:

f (month === 0) {
   
   year--;//如果当前月份是1月,那上一个月为去年的12月
   month = 12;
}

接下来,我们要判断取得月份的天数,首先判断是大月份,2月还是小月份,如果是2月,还要判断是闰年还是非闰年,所以:

if (bigMonthList.some((ele) => {
   
   return ele === month
})) {
   
   return [
      	`${
     year}${
     month < 10 ? '0' + month : month}01`,
      	`${
     year}${
     month < 10 ? '0' + month : month}31`
     	]
} else if (month === 2) {
   
   if (hasLeap) {
   
      return [
        	`${
     year}${
     month < 10 ? 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取当日和本月时间的方法同上一个回答一致,只是在格式化时间上有所不同。可以使用 JavaScript 中的 Date 对象的一些方法来进行格式化。 以下是获取当日和本月时间并格式化的示例代码: ```javascript // 格式化日期 function formatDate(date) { let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); month = month < 10 ? '0' + month : month; day = day < 10 ? '0' + day : day; return year + '-' + month + '-' + day; } // 获取的第一天和最后一天 let now = new Date(); let dayOfWeek = now.getDay(); let today = now.getDate(); let startDay = new Date(now.getFullYear(), now.getMonth(), today - dayOfWeek); let endDay = new Date(now.getFullYear(), now.getMonth(), today + (6 - dayOfWeek)); console.log(formatDate(startDay)); // 格式化后的本第一天 console.log(formatDate(endDay)); // 格式化后的本最后一天 // 获取本月的第一天和最后一天 let year = now.getFullYear(); let month = now.getMonth() + 1; let startMonth = new Date(year, month - 1, 1); let endMonth = new Date(year, month, 0); console.log(formatDate(startMonth)); // 格式化后的本月第一天 console.log(formatDate(endMonth)); // 格式化后的本月最后一天 ``` 以上代码中,我们定义了一个 formatDate 函数来格式化日期,然后使用该函数对获取到的时间进行格式化输出。需要注意的是,在格式化月份和日期时,需要判断是否小于 10,如果小于 10 则在前面加上一个 0。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值