diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java index d4e06a6ed..6ed24ef93 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java @@ -1135,10 +1135,39 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { return lastDayOfMonth.format(formatter); } - public static void main(String[] args) { - String dateString = "2024-09-20 13:35:56"; - long minutesPassed = minutesSince(dateString); - System.out.println(minutesPassed); + /** + * 判断目标时间是否在优惠时间段内 + * @param startStr 开始时间(HH:mm) + * @param endStr 结束时间(HH:mm) + * @param targetStr 目标时间(HH:mm:ss) + * @return 是否在优惠时段 + */ + public static boolean isInDiscountPeriod(String startStr, String endStr, String targetStr) { + LocalTime start = LocalTime.parse(startStr); + LocalTime end = LocalTime.parse(endStr); + LocalTime target = LocalTime.parse(targetStr); + return isInDiscountPeriod(start, end, target); + } + + /** + * 判断目标时间是否在优惠时间段内 + * @param start 开始时间(HH:mm) + * @param end 结束时间(HH:mm) + * @param target 目标时间(HH:mm:ss) + * @return 是否在优惠时段 + */ + public static boolean isInDiscountPeriod(LocalTime start, LocalTime end, LocalTime target) { + // 开始时间等于结束时间即判定为全天 + if (start.equals(end)) { + return true; + } + if (start.isAfter(end)) { + // 跨天判断逻辑 + return !target.isBefore(start) || target.isBefore(end); + } else { + // 普通时段判断逻辑 + return !target.isBefore(start) && target.isBefore(end); + } } }