周起止日期为查询条件

SQL查询: 

SELECT 
DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 7 DAY) as lastweekmonday,
DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY) as lastweeksunday,

DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) DAY) as monday,
DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 6 DAY) as sunday,

DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 7 DAY) as nextweekmonday,
DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 13 DAY) as nextweeksunday;


# 查询
SELECT
t1.id,
t1.title,
t1.date,
t1.time,
t1.attendee,
t1.place,
WEEKDAY(t1.date) as weekday,
CASE WHEN TIME( t1.time ) BETWEEN '01:00:00' 
AND '12:00:00' THEN 1
WHEN TIME( t1.time ) BETWEEN '12:00:00' 
AND '17:00:00' THEN 2 
WHEN TIME( t1.time ) BETWEEN '17:00:00' 
AND '24:00:00' THEN 3 
END as sd 
FROM schedule t1 
WHERE 1=1
AND DATE_FORMAT(t1.date,'%y%m%d') >= date_format(#{begindate},'%y%m%d')
AND DATE_FORMAT(t1.date,'%y%m%d') <= date_format(#{enddate},'%y%m%d')
ORDER BY weekday, sd


JS获取:

function ymd(day){
	return `${day.getFullYear()}-${
        day.getMonth() + 1 < 10
          ? '0' + (day.getMonth() + 1)
          : day.getMonth() + 1
      }-${
        day.getDate() < 10
          ? '0' + day.getDate()
          : day.getDate()
      }`
}

function md(day){
	return `${
        day.getMonth() + 1 < 10
          ? '0' + (day.getMonth() + 1)
          : day.getMonth() + 1
      }-${
        day.getDate() < 10
          ? '0' + day.getDate()
          : day.getDate()
      }`
}

function cnweek(index){
	const ws = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
	return ws[index];
}

function weeks(s){
	const ws = [];
	const w1 = new Date(s);
	let i = 0;
	while(i<7){
		ws.push(`${cnweek(w1.getDay())} ${md(w1)}`);
		w1.setDate(w1.getDate() + 1);
		i++;
	}
	return ws;
}

function curWeek() {
  //获取当前时间
  const currentDate = new Date()
  //返回date是一周中的某一天
  const week = currentDate.getDay()
  //一天的毫秒数
  const millisecond = 1000 * 60 * 60 * 24
  //减去的天数
  const minusDay = week != 0 ? week - 1 : 6
  //本周 周一
  const monday = new Date(currentDate.getTime() - minusDay * millisecond)
  //本周 周日
  const sunday = new Date(monday.getTime() + 6 * millisecond)

  let startDate = ymd(monday)
  let endDate = ymd(sunday)
  return [startDate, endDate]
}

 function prevWeek(day) {
  const Time = !!day?new Date(day):new Date()
  let weekNum = Time.getDay() 
  weekNum = weekNum == 0 ? 7 : weekNum
  let lastDate = new Date(Time.getTime() - weekNum * 24 * 60 * 60 * 1000)
  let fitstDate = new Date(
	Time.getTime() - (weekNum + 6) * 24 * 60 * 60 * 1000
  )
  let startDate = ymd(fitstDate)
  let endDate = ymd(lastDate)
  return [startDate, endDate]
}


function nextWeek(day) {
  const Time = !!day?new Date(day):new Date()
  let weekNum = Time.getDay()
  weekNum = weekNum == 0 ? 7 : weekNum

  let fitstDate = new Date(
	Time.getTime() + (7 - weekNum + 1) * 24 * 60 * 60 * 1000
  )
  let lastDate = new Date(
	Time.getTime() + (7 - weekNum + 7) * 24 * 60 * 60 * 1000
  )
  let startDate = ymd(fitstDate)
  let endDate = ymd(lastDate)
  return [startDate, endDate]
}


console.log(prevWeek());
console.log(curWeek());
console.log(nextWeek());
console.log("===============================================================")
console.log(prevWeek('2022-10-24'));
console.log(prevWeek('2022-10-17'));
console.log(nextWeek('2022-10-17'));
console.log(weeks('2022-10-31'));


JAVA获取: 
package atest;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Test日历获取周起止日期 {

    public static String curWeek() {
        Calendar cal = Calendar.getInstance(Locale.CHINA);
        // cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 从星期日开始
        cal.setFirstDayOfWeek(Calendar.MONDAY);

        // int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        // System.out.println(dayOfWeek);

        // 获取本周一和周日的日期
        // System.out.println(cal.getTime());
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        String start = sdf.format(cal.getTime());

        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        String end = sdf.format(cal.getTime());

        // 获取上周的周一和周日的日期
        // cal.clear();// 1970-01-01
        // System.out.println(sdf.format(cal.getTime()));
        return String.format("{ start: %s, end: %s }", start, end);
    }

    public static Date parseDate(String strDate) {
        Date dt = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            dt = sdf.parse(strDate);
        } catch (Exception ex) {
            System.out.println("Exception occur in parseDate(strDate,fmt)," + ex.getMessage());
        }
        return dt;
    }

    public static String prevWeek(String day) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance(Locale.CHINA);
        Date date = parseDate(day);
        cal.setTime(date);
        cal.add(Calendar.WEEK_OF_YEAR, -1);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        String start = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String end = sdf.format(cal.getTime());
        return String.format("{ start: %s, end: %s }", start, end);
    }

    public static String nextWeek(String day) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance(Locale.CHINA);
        Date date = parseDate(day);
        cal.setTime(date);
        cal.add(Calendar.WEEK_OF_YEAR, 1);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        String start = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String end = sdf.format(cal.getTime());
        return String.format("{ start: %s, end: %s }", start, end);
    }

    public static void main(String[] args) {
        Long a = null;
        String str = String.valueOf(a);
        System.out.println(String.valueOf(a));
        System.out.println("".length());
        System.out.println("curweek ===> " + curWeek());
        System.out.println("prevweek ===> " + prevWeek("2022-10-31"));
        System.out.println("nextWeek ===> " + nextWeek("2022-11-02"));

    }

}