import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class WeekAndDate {
private static final String YEAR_MONTH_DATE_2 = "yyyyMMdd";
public static SimpleDateFormat getFormat(String format) {
return new SimpleDateFormat(format);
}
/**
* 获取上周周几的日期,默认一周从周日开始
*
* @param dayOfWeek
* @param weekOffset
* @return
*/
public static Date getDayOfWeek(int dayOfWeek, int weekOffset) {
return getDayOfWeek(Calendar.SUNDAY, dayOfWeek, weekOffset);
}
/**
* 获取上(下)周周几的日期
*
* @param firstDayOfWeek {@link Calendar} 值范围 SUNDAY,
* MONDAY, TUESDAY,
* WEDNESDAY, THURSDAY,
* FRIDAY, and SATURDAY
* @param dayOfWeek {@link Calendar}
* @param weekOffset 周偏移,上周为-1,本周为0,下周为1,以此类推
* @return
*/
public static Date getDayOfWeek(int firstDayOfWeek, int dayOfWeek, int weekOffset) {
if (dayOfWeek > Calendar.SATURDAY || dayOfWeek < Calendar.SUNDAY) {
return null;
}
if (firstDayOfWeek > Calendar.SATURDAY || firstDayOfWeek < Calendar.SUNDAY) {
return null;
}
Calendar date = Calendar.getInstance(Locale.CHINA);
date.setFirstDayOfWeek(firstDayOfWeek);
// 周数减一,即上周
date.add(Calendar.WEEK_OF_MONTH, weekOffset);
// 日子设为周几
date.set(Calendar.DAY_OF_WEEK, dayOfWeek);
// 时分秒全部置0
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
return date.getTime();
}
public static void main(String[] args) {
// 获取当周开始日期
System.out.println("当周开始日期" +
getFormat(YEAR_MONTH_DATE_2).format(getDayOfWeek(Calendar.SUNDAY, 0)));
// 获取当周结束日期
System.out.println("当周结束日期" +
getFormat(YEAR_MONTH_DATE_2).format(getDayOfWeek(Calendar.SATURDAY, 0)));
// 获取上周开始日期
System.out.println("上周开始日期" +
getFormat(YEAR_MONTH_DATE_2).format(getDayOfWeek(Calendar.SUNDAY, -1)));
// 获取上周结束日期
System.out.println("上周结束日期" +
getFormat(YEAR_MONTH_DATE_2).format(getDayOfWeek(Calendar.SATURDAY, -1)));
}
// 获取有效的开始日期
// private String getBeginDate(){
//
// }
// 获取日期结束日期,需要再批次范围内
public String fixTheBeginDate(String batchBeginDate, String weekBeginDate) {
String beginDate = weekBeginDate;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date batchDate = simpleDateFormat.parse(batchBeginDate);
Date weekDate = simpleDateFormat.parse(weekBeginDate);
if (weekDate.before(batchDate)) {
beginDate = batchBeginDate;
}
} catch (ParseException e) {
e.printStackTrace();
}
return beginDate;
}
// 获取日期结束日期,需要再批次范围内
public String fixTheEndDate(String batchEndDate, String weekEndDate) {
String endDate = weekEndDate;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date batchDate = simpleDateFormat.parse(batchEndDate);
Date weekDate = simpleDateFormat.parse(weekEndDate);
if (weekDate.after(batchDate)) {
endDate = batchEndDate;
}
} catch (ParseException e) {
e.printStackTrace();
}
return endDate;
}
public void xx() {
String startDate = "20201113";
String endDate = "20201114";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date date01 = simpleDateFormat.parse(startDate);
Date date02 = simpleDateFormat.parse(endDate);
if (date01.before(date02)) {
return;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}