This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new ea31137  Refactor toDateTime with time zone (#7558)
ea31137 is described below

commit ea3113773664f7533b672c18a0ff9c74e7143856
Author: Fritz Budiyanto <fri...@gmail.com>
AuthorDate: Wed Oct 13 11:00:39 2021 -0700

    Refactor toDateTime with time zone (#7558)
    
    * Refactor toDateTime with time zone
    
    Hide parsing and formatter logic inside DateTimePatternHandler
    
    * Refactor toDateTime with time zone
    
    Hide parsing and formatter logic inside DateTimePatternHandler
    
    * Use Joda DateTimeZone.getID() to get the time zone id
    
    DateTimeZone.getID() is the prefered way of getting time zone id instead
    of using DateTimeZone.toString()
---
 .../pinot/common/function/DateTimePatternHandler.java  | 18 +++++++++++++++---
 .../common/function/scalar/DateTimeFunctions.java      |  8 ++------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
index 078c0ca..c88c3d8 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pinot.common.function;
 
+import org.joda.time.DateTimeZone;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
 
@@ -45,10 +46,21 @@ public class DateTimePatternHandler {
     return dateTimeFormatter.print(millis);
   }
 
-  private static DateTimeFormatter getDateTimeFormatter(String pattern) {
-    // Note: withZoneUTC is overwritten if the timezone is specified directly 
in the pattern
+  /**
+   * Converts the millis representing seconds since epoch into a string of 
passed pattern and time zone id
+   */
+  public static String parseEpochMillisToDateTimeString(long millis, String 
pattern, String timezoneId) {
+    DateTimeFormatter dateTimeFormatter = getDateTimeFormatter(pattern, 
timezoneId);
+    return dateTimeFormatter.print(millis);
+  }
+
+  private static DateTimeFormatter getDateTimeFormatter(String pattern, String 
timezoneId) {
     // This also leverages an internal cache so it won't generate a new 
DateTimeFormatter for every row with
     // the same pattern
-    return DateTimeFormat.forPattern(pattern).withZoneUTC();
+    return 
DateTimeFormat.forPattern(pattern).withZone(DateTimeZone.forID(timezoneId));
+  }
+
+  private static DateTimeFormatter getDateTimeFormatter(String pattern) {
+    return getDateTimeFormatter(pattern, DateTimeZone.UTC.getID());
   }
 }
diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
index 8f30bda..e875fa6 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
@@ -28,7 +28,6 @@ import org.apache.pinot.spi.annotations.ScalarFunction;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeField;
 import org.joda.time.DateTimeZone;
-import org.joda.time.format.DateTimeFormat;
 
 
 /**
@@ -258,14 +257,11 @@ public class DateTimeFunctions {
   }
 
   /**
-   * Converts epoch millis to DateTime string represented by pattern
-   * and the time zone id.
+   * Converts epoch millis to DateTime string represented by pattern and the 
time zone id.
    */
   @ScalarFunction
   public static String toDateTime(long millis, String pattern, String 
timezoneId) {
-    return DateTimeFormat
-            .forPattern(pattern)
-            .withZone(DateTimeZone.forID(timezoneId)).print(millis);
+    return DateTimePatternHandler.parseEpochMillisToDateTimeString(millis, 
pattern, timezoneId);
   }
 
   /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to