This is an automated email from the ASF dual-hosted git repository.
nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push:
new 19706b2 KYLIN-4010 Support date format "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"
19706b2 is described below
commit 19706b2e2aeac0e65ec467c55a8b90bb5b43ff51
Author: nichunen <[email protected]>
AuthorDate: Mon Sep 23 22:26:02 2019 +0800
KYLIN-4010 Support date format "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"
---
.../org/apache/kylin/common/util/DateFormat.java | 11 ++++-
.../org/apache/kylin/common/util/BasicTest.java | 55 ++++++++--------------
2 files changed, 29 insertions(+), 37 deletions(-)
diff --git
a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
index e7a5579..fd86c62 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
@@ -37,11 +37,14 @@ public class DateFormat {
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static final String YYYYMMDDHHMM = "yyyyMMddHHmm";
public static final String YYYYMMDDHH = "yyyyMMddHH";
+ public static final String ISO_8601_24H_FULL_FORMAT =
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ";
+
public static final String[] SUPPORTED_DATETIME_PATTERN = { //
DEFAULT_DATE_PATTERN, //
DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS, //
DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS, //
- COMPACT_DATE_PATTERN };
+ COMPACT_DATE_PATTERN, //
+ ISO_8601_24H_FULL_FORMAT};
static final private Map<String, FastDateFormat> formatMap = new
ConcurrentHashMap<String, FastDateFormat>();
@@ -132,7 +135,11 @@ public class DateFormat {
} else if (str.length() == 19) {
return stringToDate(str,
DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS).getTime();
} else if (str.length() > 19) {
- return stringToDate(str,
DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).getTime();
+ if (str.contains("T")) {
+ return stringToDate(str, ISO_8601_24H_FULL_FORMAT).getTime();
+ } else {
+ return stringToDate(str,
DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).getTime();
+ }
} else {
throw new IllegalArgumentException("there is no valid date pattern
for:" + str);
}
diff --git
a/core-common/src/test/java/org/apache/kylin/common/util/BasicTest.java
b/core-common/src/test/java/org/apache/kylin/common/util/BasicTest.java
index e4c65fb..46f5c97 100644
--- a/core-common/src/test/java/org/apache/kylin/common/util/BasicTest.java
+++ b/core-common/src/test/java/org/apache/kylin/common/util/BasicTest.java
@@ -18,14 +18,11 @@
package org.apache.kylin.common.util;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
@@ -56,19 +53,13 @@ import com.google.common.collect.Maps;
@SuppressWarnings("unused")
public class BasicTest {
protected static final org.slf4j.Logger logger =
LoggerFactory.getLogger(BasicTest.class);
-
- private enum MetricType {
- Count, DimensionAsMetric, DistinctCount, Normal
- }
-
public static int counter = 1;
- class X {
- byte[] mm = new byte[100];
-
- public X() {
- counter++;
- }
+ private static String time(long t) {
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss",
Locale.ROOT);
+ Calendar cal = Calendar.getInstance(TimeZone.getDefault(),
Locale.ROOT);
+ cal.setTimeInMillis(t);
+ return dateFormat.format(cal.getTime());
}
@Test
@@ -151,13 +142,14 @@ public class BasicTest {
}
@Test
- @Ignore("convenient trial tool for dev")
public void test1() throws Exception {
System.out.println(org.apache.kylin.common.util.DateFormat.formatToTimeStr(1433833611000L));
System.out.println(org.apache.kylin.common.util.DateFormat.formatToTimeStr(1433250517000L));
System.out.println(org.apache.kylin.common.util.DateFormat.stringToMillis("2015-06-01
00:00:00"));
System.out.println(org.apache.kylin.common.util.DateFormat.stringToMillis("2015-05-15
17:00:00"));
+ Assert.assertEquals(1568960682251L,
+
org.apache.kylin.common.util.DateFormat.stringToMillis("2019-09-20T14:24:42.251+08:00"));
String bb =
"\\x00\\x00\\x00\\x00\\x01\\x3F\\xD0\\x2D\\58\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00";//2013/07/12
07:59:37
String cc =
"\\x00\\x00\\x00\\x00\\x01\\x41\\xBE\\x8F\\xD8\\x00\\x00\\x00\\x00\\x00\\x00\\x00";//2013/10/16
08:00:00
@@ -195,22 +187,10 @@ public class BasicTest {
}
@Test
- @Ignore("fix it later")
- public void test2() throws IOException {
- ArrayList<String> x = Lists.newArrayListWithCapacity(10);
- x.set(2, "dd");
- for (String y : x) {
- System.out.println(y);
- }
- }
-
- @Test
- @Ignore("for dev only")
public void test3() throws Exception {
- FastDateFormat formatter =
org.apache.kylin.common.util.DateFormat.getDateFormat("MMM dd, yyyy hh:mm:ss
aa");
- System.out.println(formatter.format(new Date()));
+ FastDateFormat formatter =
org.apache.kylin.common.util.DateFormat.getDateFormat("MM dd, yyyy hh:mm:ss a");
- String timeStr = "Jul 20, 2016 9:59:17 AM";
+ String timeStr = "07 20, 2016 09:59:17 AM";
System.out.println(formatter.parse(timeStr).getTime());
}
@@ -218,7 +198,7 @@ public class BasicTest {
@Test
public void testStringSplit() throws Exception {
- String[] origin = new String[] {"ab,c", "cd|e"};
+ String[] origin = new String[] { "ab,c", "cd|e" };
// test with sequence file default delimiter
String delimiter = "\01"; //"\u001F"; "\t";
@@ -232,10 +212,15 @@ public class BasicTest {
Assert.assertEquals(origin, newValues);
}
- private static String time(long t) {
- DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss",
Locale.ROOT);
- Calendar cal = Calendar.getInstance(TimeZone.getDefault(),
Locale.ROOT);
- cal.setTimeInMillis(t);
- return dateFormat.format(cal.getTime());
+ private enum MetricType {
+ Count, DimensionAsMetric, DistinctCount, Normal
+ }
+
+ class X {
+ byte[] mm = new byte[100];
+
+ public X() {
+ counter++;
+ }
}
}