public class DateRangeUtils {
/**
* 昨天零点
*/
public static Date yesterday() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 今天零点
*/
public static Date today() {
Calendar calendar = Calendar.getInstance();
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 上周周一零点
*/
public static Date lastMonday() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -7);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 本周周一零点
*/
public static Date monday() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 去年1月1日零点
*/
public static Date lastYear() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
calendar.set(Calendar.DAY_OF_YEAR, Calendar.YEAR);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 今年1月1日零点
*/
public static Date year() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, Calendar.YEAR);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 计算指定天数的日期
*/
public static Date designatedDate(int day) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, day);
return DateUtils.truncate(calendar.getTime(), Calendar.DATE);
}
/**
* 计算与当前时间差值
*/
public static int dateDelta(Date date) {
Calendar calendar = Calendar.getInstance();
long delta = calendar.getTime().getTime() - date.getTime();
return (int)delta;
}
/**
* 补齐时间区间
*/
public static List<String> completionDate(LocalDateTime startDate, LocalDateTime endDate) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<String> dateList = new ArrayList<>();
for (int i = 0; !Duration.between(startDate.plusDays(i), endDate).isNegative(); i++) {
dateList.add(startDate.plusDays(i).format(dateTimeFormatter));
}
return dateList;
}
public static void main(String[] args) {
System.out.println(lastMonday());
System.out.println(monday());
System.out.println(yesterday());
System.out.println(today());
System.out.println(lastYear());
System.out.println(year());
System.out.println(designatedDate(-365));
System.out.println(designatedDate(365));
System.out.println(dateDelta(yesterday()));
LocalDateTime localDate = LocalDateTime.now();
LocalDateTime localDate1 = LocalDateTime.now().minusDays(30);
List<String> strings = completionDate(localDate1, localDate);
strings.forEach(System.out::println);
}
}