This is an automated email from the ASF dual-hosted git repository.
wuchunfu pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 97191c54b6 [Fix] Fix `DateUtils` can not parse datetime string with
local timezone (#9019)
97191c54b6 is described below
commit 97191c54b6495a4f12a09ebdf2d95fee6ef2232b
Author: Jia Fan <[email protected]>
AuthorDate: Mon Apr 7 15:35:23 2025 +0800
[Fix] Fix `DateUtils` can not parse datetime string with local timezone
(#9019)
---
.../org/apache/seatunnel/common/utils/DateUtils.java | 2 +-
.../apache/seatunnel/common/utils/DateUtilsTest.java | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git
a/seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java
b/seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java
index 3fc4af909a..04105cfdf8 100644
---
a/seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java
+++
b/seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java
@@ -57,7 +57,7 @@ public class DateUtils {
Pattern.compile("\\d{4}/\\d{2}/\\d{2}"),
Pattern.compile("\\d{4}\\.\\d{2}\\.\\d{2}"),
Pattern.compile("\\d{8}"),
-
Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?Z"),
+
Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?Z?"),
Pattern.compile("\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}"),
Pattern.compile("\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?"),
Pattern.compile("\\d{4}/\\d{1,2}/\\d{1,2}")
diff --git
a/seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java
b/seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java
index 7e4c3c58c9..9a18a4965e 100644
---
a/seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java
+++
b/seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java
@@ -20,6 +20,12 @@ package org.apache.seatunnel.common.utils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.TemporalAccessor;
+import java.time.temporal.TemporalQueries;
+
public class DateUtilsTest {
@Test
@@ -79,4 +85,15 @@ public class DateUtilsTest {
"2024-01-10",
DateUtils.parse(datetimeStr,
DateUtils.matchDateFormatter(datetimeStr)).toString());
}
+
+ @Test
+ public void testConvertDateTimeWithLocalTimeZone() {
+ String datetimeStr = "2024-12-16T15:33:45";
+ TemporalAccessor parsedTimestamp =
+ DateUtils.matchDateFormatter(datetimeStr).parse(datetimeStr);
+ LocalTime localTime =
parsedTimestamp.query(TemporalQueries.localTime());
+ LocalDate localDate =
parsedTimestamp.query(TemporalQueries.localDate());
+ LocalDateTime dateTime = LocalDateTime.of(localDate, localTime);
+ Assertions.assertEquals("2024-12-16T15:33:45", dateTime.toString());
+ }
}