获取【昨日】、【本周】、【本月】、【本季度】、【近5天】、【固定时间段】的范围内的所有日期
public class DateUtils {
public static void main(String[] args) {
System.out.println("昨日:" + AnalysisDateUtils.getYesterday());
System.out.println("本周:" + AnalysisDateUtils.getCurrentWeekDays());
System.out.println("本月:" + AnalysisDateUtils.getCurrentMonthDays());
System.out.println("本季度:" + AnalysisDateUtils.getCurrentQuarterDays());
System.out.println("近5天:" + AnalysisDateUtils.getCustomDays(5));
System.out.println("固定时间段:" + AnalysisDateUtils.getFixedDays(LocalDate.now().minusDays(10), LocalDate.now()));
}
public List<String> getYesterday() {
String yesterday = LocalDate.now().minusDays(1).toString();
return Collections.singletonList(yesterday);
}
public List<String> getCurrentWeekDays() {
LocalDate now = LocalDate.now();
LocalDate monday = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate sunday = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
return getAscDateList(monday, sunday);
}
public List<String> getCurrentMonthDays() {
LocalDate now = LocalDate.now();
LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
return getAscDateList(firstDayOfMonth, lastDayOfMonth);
}
public List<String> getCurrentQuarterDays() {
LocalDate startOrStartDayOfQuarter = getStartOrEndDayOfQuarter(true);
LocalDate startOrEndDayOfQuarter = getStartOrEndDayOfQuarter(false);
return getAscDateList(startOrStartDayOfQuarter, startOrEndDayOfQuarter);
}
public List<String> getCustomDays(Integer nearDays) {
LocalDate startDate = LocalDate.now().minusDays(1);
LocalDate endDate = LocalDate.now().minusDays(nearDays);
return getAscDateList(endDate, startDate);
}
public List<String> getFixedDays(LocalDate startDate, LocalDate endDate) {
return getAscDateList(startDate, endDate);
}
public static List<String> getAscDateList(LocalDate startDate, LocalDate endDate) {
List<String> result = new ArrayList<>();
if (endDate.compareTo(startDate) < 0) {
return result;
}
while (true) {
result.add(startDate.toString());
if (startDate.compareTo(endDate) >= 0) {
break;
}
startDate = startDate.plusDays(1);
}
return result;
}
public static LocalDate getStartOrEndDayOfQuarter(Boolean isFirst) {
LocalDate today = LocalDate.now();
LocalDate resDate;
Month month = today.getMonth();
Month firstMonthOfQuarter = month.firstMonthOfQuarter();
Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
if (isFirst) {
resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
} else {
resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
}
return resDate;
}
}