import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.TemporalAdjusters;
public final class LocalDateUtils {
private LocalDateUtils() {
throw new RuntimeException(LocalDateUtils.class.getName() + "不能实例化");
}
/**
* 获取指定日期所在周的星期一
* @param date
* @return
*/
public static LocalDate getMonday(LocalDate date) {
int dayOfWeek = date.getDayOfWeek().getValue();
LocalDate monday = date.minusDays(dayOfWeek - 1);
return monday;
}
/**
* 获取指定日期所在周的星期日
* @param date
* @return
*/
public static LocalDate getSunday(LocalDate date) {
int dayOfWeek = date.getDayOfWeek().getValue();
LocalDate sunday = date.plusDays(7 - dayOfWeek);
return sunday;
}
/**
* 获取指定日期所在月的第一天
* @param date
* @return
*/
public static LocalDate getFirstDayOfMonth(LocalDate date) {
return date.with(TemporalAdjusters.firstDayOfMonth());
}
/**
* 获取指定日期所在月的最后一天
* @param date
* @return
*/
public static LocalDate getLastDayOfMonth(LocalDate date) {
return date.with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 获取指定日期所在季度的第一天
* @param date
* @return
*/
public static LocalDate getFirstDayOfQuarter(LocalDate date) {
Month firstMonthOfQuarter = date.getMonth().firstMonthOfQuarter();
return LocalDate.of(date.getYear(), firstMonthOfQuarter.getValue(), 1);
}
/**
* 获取指定日期所在季度的最后一天
* @param date
* @return
*/
public static LocalDate getLastDayOfQuarter(LocalDate date) {
Month firstMonthOfQuarter = date.getMonth().firstMonthOfQuarter();
return LocalDate.of(date.getYear(), firstMonthOfQuarter.getValue() + 2, 1).with(TemporalAdjusters.lastDayOfMonth());
}
public static void main(String[] args) {
System.out.println(getMonday(LocalDate.now()));
System.out.println(getSunday(LocalDate.now()));
System.out.println(getFirstDayOfMonth(LocalDate.now()));
System.out.println(getLastDayOfMonth(LocalDate.now()));
System.out.println(getFirstDayOfQuarter(LocalDate.of(2018, 8, 9)));
System.out.println(getLastDayOfQuarter(LocalDate.of(2018, 8, 9)));
System.out.println(getFirstDayOfQuarter(LocalDate.of(2018, 10, 9)));
System.out.println(getLastDayOfQuarter(LocalDate.of(2018, 10, 9)));
}
}