This commit is contained in:
Van0313
2025-06-19 01:30:17 +08:00
parent 1e035a7b41
commit d4c8054c94

View File

@@ -44,6 +44,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@@ -2068,30 +2069,43 @@ public class JDUtil {
private Date orderDate; private Date orderDate;
} }
public List<LocalDate> getDateFromLD(String dateStr) { public List<LocalDate> getDateFromLD(String dateStr) {
ArrayList<LocalDate> dateArrayList = new ArrayList<>(); ArrayList<LocalDate> dateArrayList = new ArrayList<>();
logger.info("开始解析日期 {}", dateStr); logger.info("开始解析日期 {}", dateStr);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
// 检查是否包含连字符(日期范围)
if (dateStr.contains("-")) { if (dateStr.contains("-")) {
String[] dates = dateStr.split("-"); String[] dates = dateStr.split("-");
for (String date : dates) { if (dates.length == 2) { // 确保是合法的范围格式
dateArrayList.addAll(getDateFromLD(date)); try {
LocalDate startDate = LocalDate.parse(dates[0], formatter);
LocalDate endDate = LocalDate.parse(dates[1], formatter);
dateArrayList.add(startDate);
dateArrayList.add(endDate);
logger.info("成功解析日期范围: {} 到 {}", startDate, endDate);
} catch (DateTimeParseException e) {
logger.error("日期范围解析失败: {}", dateStr, e);
// 可选择返回空列表或抛出异常
}
} else {
logger.warn("日期范围格式不合法: {}", dateStr);
// 处理格式错误,例如只返回第一个有效日期
} }
return dateArrayList;
} else { } else {
// 定义支持的日期格式 // 处理单个日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); try {
// 解析日期字符串为 LocalDate 对象 LocalDate date = LocalDate.parse(dateStr, formatter);
LocalDate date = LocalDate.parse(dateStr, formatter); dateArrayList.add(date);
// 成功解析后,可执行后续操作(例如业务逻辑) logger.info("成功解析日期: {}", date);
logger.info("成功解析日期: {}", date); } catch (DateTimeParseException e) {
dateArrayList.add(date); logger.error("日期解析失败: {}", dateStr, e);
return dateArrayList; }
} }
return dateArrayList;
} }
public static LocalDateTime getEffectiveToday() { public static LocalDateTime getEffectiveToday() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
if (now.getHour() < 8) { if (now.getHour() < 8) {