js获取昨天/明天、本周/上周/下周、本月/上月、本季度/上季度、上一年的开始/结束日期

一、获取昨天、明天的日期

该方法参数如果为true:则获取昨天日期。反之为明天日期。默认为true

function getYestDayOrNextDay(flag = true) {
  // 获取当前日期
  const today = new Date();
  // 计算前一天的日期
  const yesterday = new Date(today);
  if (flag){
      yesterday.setDate(today.getDate() - 1);
  }else {
      yesterday.setDate(today.getDate() + 1);
  }
  return yesterday.toLocaleDateString();
}

console.log(getYestDayOrNextDay()); // 2023/8/5 昨天

console.log(getYestDayOrNextDay(false)); // 2023/8/7 明天

二、获取本周、上周、下周的开始结束日期

1.获取本周的开始结束日期

使用JavaScript的Date对象,获取当前日期所处的星期几,计算本周的开始日期和结束日期。

function getThisWeek() {
    let today = new Date();
    let dayOfWeek = today.getDay() - 1;
    let startDate = new Date(today.getTime() - dayOfWeek * 86400000);
    let endDate = new Date(startDate.getTime() + 4 * 86400000);
    return {
        startDate: startDate.toLocaleDateString(), // 2023/8/7
        endDate: endDate.toLocaleDateString() // 2023/8/11
    };
}
  • 在上述代码中,使用Date对象的getDay()方法获取当前日期的星期几,星期日为0,星期一为1,星期二为2,以此类推,从而计算本周的开始日期。假设今天是星期四,则本周的开始日期为今天减去三天,即startDate=today.getDay()*86400000,其中86400000是一天的毫秒数。

2.获取上周的开始结束日期

获取上周的开始结束日期,可以在上述代码的基础上再减去一周的时间。

function getLastWeek() {
  let thisWeek = getThisWeek(); // 上面获取本周的函数
  let startDate = new Date(new Date(thisWeek.startDate).getTime() - 7 * 86400000);
  let endDate = new Date(new Date(thisWeek.endDate).getTime() - 7 * 86400000);
  return {
      startDate: startDate.toLocaleDateString(), // 2023/7/31
      endDate: endDate.toLocaleDateString() // 2023/8/4
  };
}
  • 上述代码中,首先调用getThisWeek()获取本周的开始结束日期,然后将其转化为Date对象并减去一周的时间。注意,这里需要先将日期字符串转化为Date对象,再使用getTime()方法获取其对应的毫秒数。

3.获取下周的开始结束日期

function getNextWeek() {
  let thisWeek = getThisWeek();
  let startDate = new Date(new Date(thisWeek.startDate).getTime() + 7 * 86400000);
  let endDate = new Date(new Date(thisWeek.endDate).getTime() + 7 * 86400000);
  return {
      startDate: startDate.toLocaleDateString(), // 2023/8/14
      endDate: endDate.toLocaleDateString() // 2023/8/18
  };
}

二、获取本月、上月的开始结束日期

1.获取本月的开始结束日期

在JavaScript中,获取本月的开始结束日期也可以使用Date对象。首先,获取当前日期的年份和月份,然后计算本月的天数,最后计算本月的开始结束日期。

function getThisMonth() {
  let today = new Date();
  let year = today.getFullYear();
  let month = today.getMonth() + 1;
  let daysInMonth = new Date(year, month, 0).getDate();
  let startDate = new Date(year, month - 1, 1);
  let endDate = new Date(year, month - 1, daysInMonth);
  return {
      startDate: startDate.toLocaleDateString(), // 2023/8/1
      endDate: endDate.toLocaleDateString() // 2023/8/31
  };
}
  • 在上述代码中,使用Date对象的getFullYear()和getMonth()方法获取当前日期的年份和月份,月份需要加1,因为JavaScript中的月份从0开始,0表示一月,1表示二月,以此类推。然后计算本月的天数,使用Date对象的getDate()方法,参数为0时,可以得到上个月的最后一天,即本月的天数。最后计算本月的开始结束日期,分别为1号和本月的天数号。

2.获取上月的开始结束日期

获取上月的开始结束日期,可以在上述代码的基础上将当前月份减1即可。

function getLastMonth() {
  let thisMonth = getThisMonth();
  let startDate = new Date(new Date(thisMonth.startDate).setMonth(new Date(thisMonth.startDate).getMonth() - 1));
  let endDate = new Date(new Date(thisMonth.endDate).setMonth(new Date(thisMonth.endDate).getMonth(), 0));
  return {
      startDate: startDate.toLocaleDateString(), // 2023/7/1
      endDate: endDate.toLocaleDateString() // 2023/7/31
  };
}
  • 在上述代码中,首先调用getThisMonth()获取本月的开始结束日期,然后将其转化为Date对象并将月份减1即可。

三、获取本季度、上季度的开始结束日期

1.获取本月为第几季度

function getQuarter() {
  let today = new Date();
  let month = today.getMonth() + 1;
  return Math.ceil(month / 3); // 当前8月份 值为:3
}
  • 在上述代码中,使用Math.ceil()方法将月份除以3并向上取整,即可得到当前月份所处的季度。

2.获取本季度的开始与结束日期

有了当前季度,就可以计算本季度的开始结束日期。

function getThisQuarter() {
  let today = new Date();
  let year = today.getFullYear();
  let quarter = getQuarter();
  let startDate, endDate;
  if (quarter == 1) {
      startDate = new Date(year, 0, 1);
      endDate = new Date(year, 2, 31);
  } else if (quarter == 2) {
      startDate = new Date(year, 3, 1);
      endDate = new Date(year, 5, 30);
  } else if (quarter == 3) {
      startDate = new Date(year, 6, 1);
      endDate = new Date(year, 8, 30);
  } else if (quarter == 4) {
      startDate = new Date(year, 9, 1);
      endDate = new Date(year, 11, 31);
  }
  return {
      startDate: startDate.toLocaleDateString(), // 2023/7/1
      endDate: endDate.toLocaleDateString() // 2023/9/30
  };
}
  • 在上述代码中,根据当前季度计算本季度的开始结束日期。假设当前季度为第一季度,本季度的开始日期为1月1日,结束日期为3月31日;当前季度为第二季度,本季度的开始日期为4月1日,结束日期为6月30日;当前季度为第三季度,本季度的开始日期为7月1日,结束日期为9月30日;当前季度为第四季度,本季度的开始日期为10月1日,结束日期为12月31日。

3.获取上季度的开始结束日期

要获取上季度的开始结束日期,可以在上述代码的基础上将当前季度减1即可。

function getLastQuarter() {
  let thisQuarter = getThisQuarter();
  let startDate = new Date(new Date(thisQuarter.startDate).setMonth(new Date(thisQuarter.startDate).getMonth() - 3));
  let endDate = new Date(new Date(thisQuarter.endDate).setMonth(new Date(thisQuarter.endDate).getMonth() - 3));
  return {
      startDate: startDate.toLocaleDateString(), // 2023/4/1
      endDate: endDate.toLocaleDateString() // 2023/6/30
  };
}
  • 在上述代码中,首先调用getThisQuarter()获取本季度的开始结束日期,然后将其转化为Date对象并将月份减3即可。

四、获取上一年的开始结束日期

function getLastYear(){
    // 获取当前日期
    const today = new Date();
    // 获取上一年的起始日期
    const startDate = today.getFullYear() - 1 + '/1/1'
    // 获取上一年的结束日期
    const endDate = today.getFullYear() - 1 + '/12/31'
    return {
        startDate, // 2023/1/1
        endDate // 2023/12/31
    };
}

你可能感兴趣的:(javascript,开发语言,ecmascript)