This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4bb3c65c712 [IOTDB-6302] Enhance the support of ISO_LOCAL_DATE_TIME
timestamp format (#12086)
4bb3c65c712 is described below
commit 4bb3c65c7122806a4f69943849f71e22586a68a8
Author: Haonan <[email protected]>
AuthorDate: Mon Feb 26 18:50:40 2024 +0800
[IOTDB-6302] Enhance the support of ISO_LOCAL_DATE_TIME timestamp format
(#12086)
---
.../org/apache/iotdb/db/utils/DateTimeUtils.java | 11 ++----
.../apache/iotdb/db/utils/DateTimeUtilsTest.java | 41 ++++++++++++++++++++++
2 files changed, 44 insertions(+), 8 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
index 5e04f97504b..66bbc945848 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
@@ -97,9 +97,7 @@ public class DateTimeUtils {
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.optionalStart()
- .appendLiteral('.')
- .appendValue(ChronoField.MILLI_OF_SECOND, 3)
- .optionalEnd()
+ .appendFraction(ChronoField.MILLI_OF_SECOND, 0, 3, true)
.toFormatter();
}
@@ -115,9 +113,7 @@ public class DateTimeUtils {
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.optionalStart()
- .appendLiteral('.')
- .appendValue(ChronoField.MICRO_OF_SECOND, 6)
- .optionalEnd()
+ .appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
.toFormatter();
}
@@ -133,8 +129,7 @@ public class DateTimeUtils {
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.optionalStart()
- .appendLiteral('.')
- .appendValue(ChronoField.NANO_OF_SECOND, 9)
+ .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)
.optionalEnd()
.toFormatter();
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
index a7ed50c287a..8df917e6fca 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
@@ -50,6 +50,7 @@ public class DateTimeUtilsTest {
}
testConvertDatetimeStrToLongWithoutMS(zoneOffset, zoneId, timestamp - 689
+ delta);
testConvertDatetimeStrToLongWithMS(zoneOffset, zoneId, timestamp + delta);
+ testConvertDatetimeStrToLongWithMS2(zoneOffset, zoneId, timestamp - 9 +
delta);
}
@Test
@@ -59,6 +60,7 @@ public class DateTimeUtilsTest {
delta = 8 * 3600000;
testConvertDatetimeStrToLongWithoutMS(zoneOffset, zoneId, timestamp - 689
+ delta);
testConvertDatetimeStrToLongWithMS(zoneOffset, zoneId, timestamp + delta);
+ testConvertDatetimeStrToLongWithMS2(zoneOffset, zoneId, timestamp - 9 +
delta);
}
@Test
@@ -222,6 +224,45 @@ public class DateTimeUtilsTest {
}
}
+ public void testConvertDatetimeStrToLongWithMS2(ZoneOffset zoneOffset,
ZoneId zoneId, long res) {
+ String[] timeFormatWithoutMs =
+ new String[] {
+ "2019-01-02 15:13:27.680",
+ "2019/01/02 15:13:27.680",
+ "2019.01.02 15:13:27.680",
+ "2019-01-02T15:13:27.680",
+ "2019-01-02T15:13:27.680",
+ "2019/01/02T15:13:27.680",
+ "2019.01.02T15:13:27.680",
+ "2019-01-02 15:13:27.680" + zoneOffset,
+ "2019/01/02 15:13:27.680" + zoneOffset,
+ "2019.01.02 15:13:27.680" + zoneOffset,
+ "2019-01-02T15:13:27.680" + zoneOffset,
+ "2019/01/02T15:13:27.680" + zoneOffset,
+ "2019.01.02T15:13:27.680" + zoneOffset,
+ "2019-01-02 15:13:27.68",
+ "2019/01/02 15:13:27.68",
+ "2019.01.02 15:13:27.68",
+ "2019-01-02T15:13:27.68",
+ "2019-01-02T15:13:27.68",
+ "2019/01/02T15:13:27.68",
+ "2019.01.02T15:13:27.68",
+ "2019-01-02 15:13:27.68" + zoneOffset,
+ "2019/01/02 15:13:27.68" + zoneOffset,
+ "2019.01.02 15:13:27.68" + zoneOffset,
+ "2019-01-02T15:13:27.68" + zoneOffset,
+ "2019/01/02T15:13:27.68" + zoneOffset,
+ "2019.01.02T15:13:27.68" + zoneOffset,
+ };
+ for (String str : timeFormatWithoutMs) {
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str,
zoneOffset, 0, "ms"));
+ }
+
+ for (String str : timeFormatWithoutMs) {
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneId));
+ }
+ }
+
public void testConvertDateStrToLong(ZoneOffset zoneOffset, ZoneId zoneId,
long res) {
String[] timeFormatWithoutMs =
new String[] {