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 <n...@apache.org>
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++;
+        }
     }
 }

Reply via email to