Skip to content

Commit 97191c5

Browse files
authored
[Fix] Fix DateUtils can not parse datetime string with local timezone (#9019)
1 parent 7adf523 commit 97191c5

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public class DateUtils {
5757
Pattern.compile("\\d{4}/\\d{2}/\\d{2}"),
5858
Pattern.compile("\\d{4}\\.\\d{2}\\.\\d{2}"),
5959
Pattern.compile("\\d{8}"),
60-
Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?Z"),
60+
Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?Z?"),
6161
Pattern.compile("\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}"),
6262
Pattern.compile("\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?"),
6363
Pattern.compile("\\d{4}/\\d{1,2}/\\d{1,2}")

seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@
2020
import org.junit.jupiter.api.Assertions;
2121
import org.junit.jupiter.api.Test;
2222

23+
import java.time.LocalDate;
24+
import java.time.LocalDateTime;
25+
import java.time.LocalTime;
26+
import java.time.temporal.TemporalAccessor;
27+
import java.time.temporal.TemporalQueries;
28+
2329
public class DateUtilsTest {
2430

2531
@Test
@@ -79,4 +85,15 @@ public void testMatchDateTimeFormatter() {
7985
"2024-01-10",
8086
DateUtils.parse(datetimeStr, DateUtils.matchDateFormatter(datetimeStr)).toString());
8187
}
88+
89+
@Test
90+
public void testConvertDateTimeWithLocalTimeZone() {
91+
String datetimeStr = "2024-12-16T15:33:45";
92+
TemporalAccessor parsedTimestamp =
93+
DateUtils.matchDateFormatter(datetimeStr).parse(datetimeStr);
94+
LocalTime localTime = parsedTimestamp.query(TemporalQueries.localTime());
95+
LocalDate localDate = parsedTimestamp.query(TemporalQueries.localDate());
96+
LocalDateTime dateTime = LocalDateTime.of(localDate, localTime);
97+
Assertions.assertEquals("2024-12-16T15:33:45", dateTime.toString());
98+
}
8299
}

0 commit comments

Comments
 (0)