1. 程式人生 > >根據指定日期獲取該日期所在周的所有日期

根據指定日期獲取該日期所在周的所有日期

一.需求

根據指定日期獲取該日期所在周的所有日期

二.程式碼實現

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;
	}
}