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();
// 本月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;
}
}
Java 获取日期间隔内所有的日期集合
最新推荐文章于 2024-08-05 02:09:20 发布
DateUtils是一个公共类,包含了一系列静态方法用于处理日期,如获取昨日、本周、本月、本季度和自定义天数的日期列表。方法内部使用了LocalDate和TemporalAdjusters进行日期计算。
摘要由CSDN通过智能技术生成