根据指定日期获取该日期所在周的所有日期

一.需求

根据指定日期获取该日期所在周的所有日期

二.代码实现

package com.function.util;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class WeekUtil {
	
	/**
	 * 根据指定日期,获取当前日期所在周的所有日期
	 * @param date
	 * @return
	 */
	public static Week getWeek(Date date){
		
		//s1.设置时间格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
		Calendar cal = Calendar.getInstance();
		//s2.设置要计算的时间
		cal.setTime(date);
		
		//s3.判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
		//s4.获得当前日期是一个星期的第几天
		int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
		//s5.判断是不是一个星期的第一天
		if (1 == dayWeek) {
			//s6.如果是一个星期的第一天,则减去一天
			cal.add(Calendar.DAY_OF_MONTH, -1);
		}
		//s7.设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		//s8.获得当前日期是一个星期的第几天
		int day = cal.get(Calendar.DAY_OF_WEEK);
		//s9.根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
		cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
		//s10.获取星期一
		String monday = sdf.format(cal.getTime());
		
		//s11.获取星期二
		cal.add(Calendar.DATE, 1);
		String tuesday = sdf.format(cal.getTime());
		
		//s12.获取星期三
		cal.add(Calendar.DATE, 1);
		String wednesday = sdf.format(cal.getTime());
		
		//s13.获取星期四
		cal.add(Calendar.DATE, 1);
		String thursday = sdf.format(cal.getTime());
		
		//s14.获取星期五
		cal.add(Calendar.DATE, 1);
		String friday = sdf.format(cal.getTime());
		
		//s15.获取星期六
		cal.add(Calendar.DATE, 1);
		String saturday = sdf.format(cal.getTime());
		
		//s17.获取星期日
		cal.add(Calendar.DATE, 1);
		String sunday = sdf.format(cal.getTime());
		
		
		Week week = new Week();
		week.setMonday(monday);
		week.setTuesday(tuesday);
		week.setWednesday(wednesday);
		week.setThursday(thursday);
		week.setFriday(friday);
		week.setSaturday(saturday);
		week.setSunday(sunday);
		return week;
	}
	
	/**
	 * 获取指定日期所在周的所有日期
	 * @param date
	 * @return
	 */
	public static List<String> getWeekDays(Date date){
		List<String> weekDayList = new ArrayList<String>();
		//s1.设置时间格式
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
				Calendar cal = Calendar.getInstance();
				//s2.设置要计算的时间
				cal.setTime(date);
				
				//s3.判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
				//s4.获得当前日期是一个星期的第几天
				int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
				//s5.判断是不是一个星期的第一天
				if (1 == dayWeek) {
					//s6.如果是一个星期的第一天,则减去一天
					cal.add(Calendar.DAY_OF_MONTH, -1);
				}
				//s7.设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
				cal.setFirstDayOfWeek(Calendar.MONDAY);
				//s8.获得当前日期是一个星期的第几天
				int day = cal.get(Calendar.DAY_OF_WEEK);
				//s9.根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
				cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
				//s10.获取星期一
				String monday = sdf.format(cal.getTime());
				
				//s11.获取星期二
				cal.add(Calendar.DATE, 1);
				String tuesday = sdf.format(cal.getTime());
				
				//s12.获取星期三
				cal.add(Calendar.DATE, 1);
				String wednesday = sdf.format(cal.getTime());
				
				//s13.获取星期四
				cal.add(Calendar.DATE, 1);
				String thursday = sdf.format(cal.getTime());
				
				//s14.获取星期五
				cal.add(Calendar.DATE, 1);
				String friday = sdf.format(cal.getTime());
				
				//s15.获取星期六
				cal.add(Calendar.DATE, 1);
				String saturday = sdf.format(cal.getTime());
				
				//s16.获取星期日
				cal.add(Calendar.DATE, 1);
				String sunday = sdf.format(cal.getTime());
				weekDayList.add(monday);
				weekDayList.add(tuesday);
				weekDayList.add(wednesday);
				weekDayList.add(thursday);
				weekDayList.add(friday);
				weekDayList.add(saturday);
				weekDayList.add(sunday);
		return weekDayList;
	}
	
	public static void main(String[] args) {
		System.out.println("===================s1:指定日期所在周的日期=====================");
		Week week = getWeek(new Date());
		System.out.println("所在周星期一的日期:" + week.getMonday());
		System.out.println("所在周星期二的日期:" + week.getTuesday());
		System.out.println("所在周星期三的日期:" + week.getWednesday());
		System.out.println("所在周星期四的日期:" + week.getThursday());
		System.out.println("所在周星期五的日期:" + week.getFriday());
		System.out.println("所在周星期六的日期:" + week.getSaturday());
		System.out.println("所在周星期日的日期:" + week.getSunday());
		
		System.out.println("===================s2:指定日期所在周的所有日期=====================");
		List<String> weekDayList = getWeekDays(new Date());
		for(String weekDay : weekDayList) {
			System.out.println("日期:" + weekDay);
		}
		
	}

}

实体类

package com.function.util;

public class Week{
	/**
	 * 星期一
	 */
	private String monday;
	/**
	 * 星期二
	 */
	private String tuesday;
	/**
	 * 星期三
	 */
	private String wednesday;
	/**
	 * 星期四
	 */
	private String thursday;
	/**
	 * 星期五
	 */
	private String friday;
	/**
	 * 星期六
	 */
	private String saturday;
	/**
	 * 星期日
	 */
	private String sunday;

	public Week() {
		super();
	}

	public Week(String monday, String tuesday, String wednesday, String thursday, String friday, String saturday,
			String sunday) {
		super();
		this.monday = monday;
		this.tuesday = tuesday;
		this.wednesday = wednesday;
		this.thursday = thursday;
		this.friday = friday;
		this.saturday = saturday;
		this.sunday = sunday;
	}

	public String getMonday() {
		return monday;
	}

	public void setMonday(String monday) {
		this.monday = monday;
	}

	public String getTuesday() {
		return tuesday;
	}

	public void setTuesday(String tuesday) {
		this.tuesday = tuesday;
	}

	public String getWednesday() {
		return wednesday;
	}

	public void setWednesday(String wednesday) {
		this.wednesday = wednesday;
	}

	public String getThursday() {
		return thursday;
	}

	public void setThursday(String thursday) {
		this.thursday = thursday;
	}

	public String getFriday() {
		return friday;
	}

	public void setFriday(String friday) {
		this.friday = friday;
	}

	public String getSaturday() {
		return saturday;
	}

	public void setSaturday(String saturday) {
		this.saturday = saturday;
	}

	public String getSunday() {
		return sunday;
	}

	public void setSunday(String sunday) {
		this.sunday = sunday;
	}
}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值