import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtils {
public static List getMonthList(Integer yearNum){
List list = new ArrayList<>();
Calendar instance = Calendar.getInstance();
if (null == yearNum) {
yearNum = 0;
}
int year = instance.get(Calendar.YEAR)+yearNum;
for(int i=1;i<13;i++){
String month = "";
if(i<10){
month = year + "-0" + i;
}else{
month = year + "-" + i;
}
list.add(month);
}
return list;
}
public static List getMonthList(String startTime, String endTime) {
// 返回的日期集合
List list=new ArrayList();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.MONTH, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
String day=dateFormat.format(tempStart.getTime());
list.add(day);
tempStart.add(Calendar.MONTH, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
public static List getMonthFirstLastDayList(Integer monthNum){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List list = new ArrayList<>();
if (null == monthNum) {
monthNum = 0;
}
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, monthNum);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
list.add(sdf.format(calendar.getTime()));
Calendar calendar1 = Calendar.getInstance();
calendar1.add(Calendar.MONTH, monthNum+1);
calendar1.set(Calendar.DAY_OF_MONTH, 1);
calendar1.add(Calendar.DATE, -1);
list.add(sdf.format(calendar1.getTime()));
return list;
}
public static List getMonthDayList(Integer monthNum){
List monthFirstLastDayList = getMonthFirstLastDayList(monthNum);
return getDayList(monthFirstLastDayList.get(0), monthFirstLastDayList.get(1));
}
public static List getDayList(String startTime, String endTime) {
// 返回的日期集合
List list=new ArrayList();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
String day=dateFormat.format(tempStart.getTime());
list.add(day);
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
public static List getWeekDayList(Integer weekNum) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null == weekNum) {
weekNum = 0;
}
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
int dayOfWeek = calendar1.get(Calendar.DAY_OF_WEEK) - 1;
int offset1 = 1 - dayOfWeek;
int offset2 = 7 - dayOfWeek;
calendar1.add(Calendar.DATE, offset1 - 7*weekNum);
calendar2.add(Calendar.DATE, offset2 - 7*weekNum);
String lastBeginDate = sdf.format(calendar1.getTime());
List list = new ArrayList<>();
list.add(lastBeginDate);
while (calendar2.after(calendar1)){
calendar1.add(Calendar.DAY_OF_MONTH, 1);
lastBeginDate = sdf.format(calendar1.getTime());
list.add(lastBeginDate);
}
return list;
}
public static void main(String[] args) {
List monthList = getMonthList(-2);
monthList.forEach(System.out::println);
List monthList1 = getMonthList("2022-02", "2022-05");
monthList1.forEach(System.out::println);
List monthFirstLastDayList = getMonthFirstLastDayList(-2);
System.out.println(monthFirstLastDayList);
List monthDayList = getMonthDayList(-3);
System.out.println(monthDayList);
List weekDayList = getWeekDayList(-5);
System.out.println(weekDayList);
}
}