一.需求
根据指定日期获取该日期所在周的所有日期
二.代码实现
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;
}
}