JAVA通过字符串时间获取范围内指定日期的工具类
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class ChoiceDateRangeUtils {
private static Calendar start = Calendar.getInstance();
private static Calendar end = Calendar.getInstance();
private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
public static List<String> getDatesForPastYear(String cntDateBeg, String cntDateEnd) {
List<String> list = new ArrayList<>();
String[] startDate = cntDateBeg.split("-");
String[] endDate = cntDateEnd.split("-");
start.set(Integer.parseInt(startDate[0]), Integer.parseInt(startDate[1]) - 1, Integer.parseInt(startDate[2]));
long startTIme = start.getTimeInMillis();
end.set(Integer.parseInt(endDate[0]), Integer.parseInt(endDate[1]) - 1, Integer.parseInt(endDate[2]));
long endTime = end.getTimeInMillis();
start.setTime(new Date(startTIme));
start.add(Calendar.YEAR, -1);
Date pastStarDate = start.getTime();
String pastStartDateStr = dateFormat.format(pastStarDate);
end.setTime(new Date(endTime));
end.add(Calendar.YEAR, -1);
Date pastEndDate = end.getTime();
String pastEndDateStr = dateFormat.format(pastEndDate);
return getDates(pastStartDateStr,pastEndDateStr);
}
public static String getDatesForPastYear(String cntDateBeg) {
List<String> list = new ArrayList<>();
String[] startDate = cntDateBeg.split("-");
start.set(Integer.parseInt(startDate[0]), Integer.parseInt(startDate[1]) - 1, Integer.parseInt(startDate[2]));
long startTIme = start.getTimeInMillis();
start.setTime(new Date(startTIme));
start.add(Calendar.YEAR, -1);
Date pastStarDate = start.getTime();
String pastStartDateStr = dateFormat.format(pastStarDate);
return pastStartDateStr;
}
public static List<String> getDates(String cntDateBeg, String cntDateEnd) {
List<String> list = new ArrayList<>();
String[] startDate = cntDateBeg.split("-");
String[] endDate = cntDateEnd.split("-");
start.set(Integer.parseInt(startDate[0]), Integer.parseInt(startDate[1]) - 1, Integer.parseInt(startDate[2]));
long startTIme = start.getTimeInMillis();
end.set(Integer.parseInt(endDate[0]), Integer.parseInt(endDate[1]) - 1, Integer.parseInt(endDate[2]));
long endTime = end.getTimeInMillis();
long oneDay = 1000 * 60 * 60 * 24L;
long time = startTIme;
while (time <= endTime) {
Date date = new Date(time);
time += oneDay;
list.add(dateFormat.format(date));
}
return list;
}
public static Date getDate(String date) {
try {
return dateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("时间转换异常,请检查格式");
}
return null;
}
public static Date getDate(java.sql.Date date) {
return getDate(dateFormat.format(date));
}
public static String getMonths(String dateStr) {
try {
Date date = dateFormat.parse(dateStr);
return getMonths(date);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("时间转换错误,请检查格式是否正确");
}
return null;
}
public static List<String> getMonths(String cntDateBeg, String cntDateEnd) {
try {
Date start = dateFormat.parse(cntDateBeg);
Date end = dateFormat.parse(cntDateEnd);
return getMonths(start, end);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("时间转换错误,请检查格式是否正确");
}
return null;
}
public static String getMonths(Date date) {
Calendar month = Calendar.getInstance();
month.setTime(date);
month.add(Calendar.MONTH, 0);
month.set(Calendar.DAY_OF_MONTH, 1);
return dateFormat.format(month.getTime());
}
public static List<String> getMonths(Date cntDateBeg, Date cntDateEnd) {
List<String> MonthDates = new ArrayList<>();
MonthDates.add(dateFormat.format(cntDateBeg));
Calendar monthBegin = Calendar.getInstance();
Calendar monthEnd = Calendar.getInstance();
monthBegin.setTime(cntDateBeg);
monthEnd.setTime(cntDateEnd);
Calendar testMonthBegin = (Calendar) monthBegin.clone();
testMonthBegin.add(Calendar.MONDAY, 1);
testMonthBegin.set(Calendar.DAY_OF_MONTH, 0);
boolean endMouth = false;
while (cntDateEnd.after(monthBegin.getTime())) {
if (testMonthBegin.equals(monthBegin) || endMouth) {
monthBegin.add(Calendar.MONTH, 1);
monthBegin.set(Calendar.DAY_OF_MONTH, 1);
MonthDates.add(dateFormat.format(monthBegin.getTime()));
monthBegin.add(Calendar.MONDAY, 1);
monthBegin.set(Calendar.DAY_OF_MONTH, 0);
endMouth = true;
} else {
monthBegin.add(Calendar.DAY_OF_MONTH, 1);
}
}
return MonthDates;
}
public static String getYears() {
return LocalDate.now().with(TemporalAdjusters.firstDayOfYear()).toString();
}
}