描述
范围内全部日期
- 昨日
- 本周
- 本月
- 本季度
- 近几日
- 固定时间段
代码
public class DateUtils {
public static void main(String[] args) {
System.out.println("昨日:" + DateUtils.getYesterday());
System.out.println("本周:" + DateUtils.getCurrentWeekDays());
System.out.println("本月:" + DateUtils.getCurrentMonthDays());
System.out.println("本季度:" + DateUtils.getCurrentQuarterDays());
System.out.println("近5天:" + DateUtils.getCustomDays(5));
System.out.println("固定时间段:" + DateUtils.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();
WeekFields weekFields = WeekFields.ISO;
// 周一
LocalDate startDate = now.with(weekFields.dayOfWeek(), 1L);
// 周日
LocalDate endDate = now.with(weekFields.dayOfWeek(), 7L);
return getAscDateList(monday, sunday);
}
// 本月
public List<String> getCurrentMonthDays() {
LocalDate now = LocalDate.now();
// 本月1号
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);
}
/**
* 获取 两个时间内 全部日期
*
* @param startDate 开始日期
* @param endDate 结束日期
* @return {@link List}<{@link String}>
*/
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;
}
/**
* 季度开始或结束一天
*
* @param isFirst true 季度开始 false 季度结束
* @return {@link LocalDate}
*/
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;
}
}