Java根据当前第几周获取周一和周日的日期方法

前言:

我们经常会遇到查询根据某日的日期查询数据,根据第几周查询数据,根据月份查询数据。但有的时候,接口可能需要一个开始日期和一个结束日期来查询相应的数据,然而前端的时间控件只能获取202213(2022年第13周)这样的入参,并不能给到我们13周的开始日期和结束日期,所以这时候就需要后端同学进行转换了。

今天这篇文章就讲解下如何根据第几周获取周一和周日的日期和根据月份获取第一天和最后一天。

正文:

1.根据第几周获取周一和周日的代码

使用注意点,周的日期的格式202213,中间有个判断单独拿出来讲下,就是判断本年第一周的剩余天数是否大于3,根据这个准则来判断这一周属于不属于今年的第一周。(这个准则是我们前端日期控件的判断准则,为了保持一致所以我这里也加了这个判断)

public static Map getTheSpecifiedYearAndWeekDate(String date) {
		date = date.replace("-", "");
		Integer year = Integer.valueOf(date.substring(0, 4));
		Integer week = Integer.valueOf(date.substring(4, 6));
        Map timeMap=new HashMap<>();
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, 0, 1);
        int zhouji=calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
       //计算当年第一周还剩几天
        int dayOfWeek = 0;
        if (1==zhouji){
            dayOfWeek=1;
        }
        if (2==zhouji){
            dayOfWeek=7;
        }
        if (3==zhouji){
            dayOfWeek=6;
        }
        if (4==zhouji){
            dayOfWeek=5;
        }
        if (5==zhouji){
            dayOfWeek=4;
        }
        if (6==zhouji){
            dayOfWeek=3;
        }
        if (7==zhouji){
            dayOfWeek=2;
        }
        System.out.println(dayOfWeek);
        if(dayOfWeek>3){
            week = week -2;
        }else {
            week = week -1;//周数减去第一周再减去要得到的周
        }

        calendar.add(Calendar.DAY_OF_YEAR, week *7+dayOfWeek);
        timeMap.put("fisrstDay",new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        timeMap.put("lastDay",new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
       return timeMap;
    }

2.根据当前月获取月初和月末的日期。

使用注意点,月的日期的格式202204

	public static Map getMonthBeginToEnd(String date){
		Map timeMap=new HashMap<>();
		date = date.replace("-", "");
		Integer year = Integer.valueOf(date.substring(0, 4));
		Integer month = Integer.valueOf(date.substring(4, 6));
		String fisrstDay = getFisrtDayOfMonth(year, month);
		String lastDay = getLastDayOfMonth(year, month);
		timeMap.put("fisrstDay",fisrstDay);
		timeMap.put("lastDay",lastDay);
		return timeMap;
	}

总结:

我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有41234位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!

你可能感兴趣的:(开发问题,java)