You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2021/02/02 19:33:22 UTC
[calcite-avatica] branch master updated: [CALCITE-4476]
DateTimeUtils.timeStringToUnixDate may produce wrong time (Vladimir Ozerov)
This is an automated email from the ASF dual-hosted git repository.
jhyde pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite-avatica.git
The following commit(s) were added to refs/heads/master by this push:
new cac2ffa [CALCITE-4476] DateTimeUtils.timeStringToUnixDate may produce wrong time (Vladimir Ozerov)
cac2ffa is described below
commit cac2ffaaf97572d21cba195d7590d9ab0d32382e
Author: devozerov <pp...@gmail.com>
AuthorDate: Mon Jan 25 16:48:00 2021 +0300
[CALCITE-4476] DateTimeUtils.timeStringToUnixDate may produce wrong time (Vladimir Ozerov)
Close apache/calcite-avatica#134
---
.../org/apache/calcite/avatica/util/DateTimeUtils.java | 6 +++---
.../org/apache/calcite/avatica/util/DateTimeUtilsTest.java | 14 ++++++++++----
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java b/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java
index 6969f77..1243ef4 100644
--- a/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java
+++ b/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java
@@ -666,15 +666,15 @@ public class DateTimeUtils {
int milli;
if (colon1 < 0) {
hour = Integer.parseInt(v.trim());
- minute = 1;
- second = 1;
+ minute = 0;
+ second = 0;
milli = 0;
} else {
hour = Integer.parseInt(v.substring(start, colon1).trim());
final int colon2 = v.indexOf(':', colon1 + 1);
if (colon2 < 0) {
minute = Integer.parseInt(v.substring(colon1 + 1).trim());
- second = 1;
+ second = 0;
milli = 0;
} else {
minute = Integer.parseInt(v.substring(colon1 + 1, colon2).trim());
diff --git a/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java b/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java
index 5043467..8cf32c4 100644
--- a/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java
+++ b/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java
@@ -225,6 +225,8 @@ public class DateTimeUtilsTest {
}
@Test public void testTimeToString() {
+ checkTimeString("00", "00:00:00", 0, 0);
+ checkTimeString("00:00", "00:00:00", 0, 0);
checkTimeString("00:00:00", 0, 0);
checkTimeString("23:59:59", 0, 86400000 - 1000);
checkTimeString("23:59:59.1", 1, 86400000 - 1000 + 100);
@@ -270,13 +272,17 @@ public class DateTimeUtilsTest {
}
private void checkTimeString(String s, int p, int d) {
- int digitsAfterPoint = s.indexOf('.') >= 0
- ? s.length() - s.indexOf('.') - 1
+ checkTimeString(s, s, p, d);
+ }
+
+ private void checkTimeString(String string, String expectedString, int p, int d) {
+ int digitsAfterPoint = string.indexOf('.') >= 0
+ ? string.length() - string.indexOf('.') - 1
: 0;
if (digitsAfterPoint == p) {
- assertThat(unixTimeToString(d, p), is(s));
+ assertThat(unixTimeToString(d, p), is(expectedString));
}
- assertThat(timeStringToUnixDate(s), is(d));
+ assertThat(timeStringToUnixDate(string), is(d));
}
@Test public void testTimestampToString() {