mirror of
https://github.com/carm-outsource/TimeReward.git
synced 2026-06-04 07:18:16 +08:00
74 lines
2.2 KiB
Java
74 lines
2.2 KiB
Java
package cc.carm.plugin.timereward.util;
|
|
|
|
import java.time.DayOfWeek;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
import java.time.temporal.Temporal;
|
|
import java.time.temporal.TemporalAdjusters;
|
|
import java.time.temporal.TemporalField;
|
|
import java.time.temporal.WeekFields;
|
|
import java.util.function.Supplier;
|
|
|
|
public class DateTimeUtils {
|
|
|
|
public static Supplier<DayOfWeek> WEEK_START_DAY = () -> DayOfWeek.MONDAY;
|
|
|
|
public static boolean sameDay(LocalDate a) {
|
|
return sameDay(a, LocalDate.now());
|
|
}
|
|
|
|
public static boolean sameDay(LocalDate a, LocalDate b) {
|
|
return a.getDayOfYear() == b.getDayOfYear() && a.getYear() == b.getYear();
|
|
}
|
|
|
|
public static boolean sameWeek(Temporal a) {
|
|
return sameWeek(WEEK_START_DAY.get(), a, LocalDate.now());
|
|
}
|
|
|
|
public static boolean sameWeek(DayOfWeek weekStart, Temporal a) {
|
|
return sameWeek(weekStart, a, LocalDate.now());
|
|
}
|
|
|
|
public static boolean sameWeek(Temporal a, Temporal b) {
|
|
return sameWeek(WEEK_START_DAY.get(), a, b);
|
|
}
|
|
|
|
public static boolean sameWeek(DayOfWeek weekStart, Temporal a, Temporal b) {
|
|
TemporalField woy = WeekFields.of(weekStart, 4).weekOfWeekBasedYear();
|
|
return a.get(woy) == b.get(woy);
|
|
}
|
|
|
|
public static boolean sameMonth(LocalDate a) {
|
|
return sameMonth(a, LocalDate.now());
|
|
}
|
|
|
|
public static boolean sameMonth(LocalDate a, LocalDate b) {
|
|
return a.getMonth().equals(b.getMonth());
|
|
}
|
|
|
|
public static LocalDateTime todayStartTime() {
|
|
return LocalDate.now().atTime(0, 0);
|
|
}
|
|
|
|
public static LocalDate currentWeekStartDay(DayOfWeek weekStart) {
|
|
return LocalDate.now().with(TemporalAdjusters.previousOrSame(weekStart));
|
|
}
|
|
|
|
public static LocalDate currentWeekStartDay() {
|
|
return currentWeekStartDay(WEEK_START_DAY.get());
|
|
}
|
|
|
|
public static LocalDateTime currentWeekStartTime(DayOfWeek weekStart) {
|
|
return currentWeekStartDay(weekStart).atTime(0, 0);
|
|
}
|
|
|
|
public static LocalDateTime currentWeekStartTime() {
|
|
return currentWeekStartTime(WEEK_START_DAY.get());
|
|
}
|
|
|
|
public static LocalDateTime currentMonthStartTime() {
|
|
return LocalDate.now().withDayOfMonth(1).atTime(0, 0);
|
|
}
|
|
|
|
}
|