|
@@ -4,6 +4,7 @@ import java.time.Duration;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
+import java.time.ZonedDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Calendar;
|
|
@@ -114,7 +115,7 @@ public final class DateUtils {
|
|
|
new DatetimeParser(DateTimeFormatter.ofPattern("yyyy-M-d H:m:s.SSS"))
|
|
|
).put(
|
|
|
StringUtils.getPattern("^\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}\\.\\d{1,3}\\S+$"),
|
|
|
- new DatetimeParser(DateTimeFormatter.ofPattern("yyyy-M-d'T'H:m:s.SSSXXX"))
|
|
|
+ new ZonedDatetimeParser(DateTimeFormatter.ofPattern("yyyy-M-d'T'H:m:s.SSSXXX"))
|
|
|
).put(
|
|
|
StringUtils.getPattern(
|
|
|
"^[a-zA-Z]{3} [a-zA-Z]{3} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} CST [0-9]{4}$"
|
|
@@ -181,6 +182,23 @@ public final class DateUtils {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 带时区日期时间文本解析实现
|
|
|
+ */
|
|
|
+ public static class ZonedDatetimeParser implements Parser {
|
|
|
+ private final DateTimeFormatter formatter;
|
|
|
+
|
|
|
+ public ZonedDatetimeParser(@NonNull DateTimeFormatter formatter) {
|
|
|
+ this.formatter = formatter;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Date parse(String text) {
|
|
|
+ ZonedDateTime zoned = ZonedDateTime.parse(text, formatter);
|
|
|
+ return convert(zoned.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查找日期文本对应的解析器
|
|
|
*
|