From 713a6c96ea5855400659bae89efa1fa451af8e83 Mon Sep 17 00:00:00 2001 From: Hiroshi Nakamura Date: Tue, 12 May 2015 15:01:26 +0900 Subject: [PATCH] Handle millisecond for time-format Millisecond here is 3 digits subsecond representation. Current strftime implementation does not support digits != 3 subsecond representation. --- .../td_import/prepare/Strftime.java | 2 +- .../td_import/prepare/TestStrftime.java | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/treasure_data/td_import/prepare/TestStrftime.java diff --git a/src/main/java/com/treasure_data/td_import/prepare/Strftime.java b/src/main/java/com/treasure_data/td_import/prepare/Strftime.java index ad875235..37968c50 100644 --- a/src/main/java/com/treasure_data/td_import/prepare/Strftime.java +++ b/src/main/java/com/treasure_data/td_import/prepare/Strftime.java @@ -53,7 +53,7 @@ protected SimpleDateFormat initialValue() { translate.put("j", "DDD"); translate.put("k", "HH"); // will show as '07' instead of ' 7' translate.put("l", "hh"); //will show as '07' instead of ' 7' - translate.put("L", "S"); + translate.put("L", "SSS"); translate.put("m", "MM"); translate.put("M", "mm"); translate.put("n", "\n"); diff --git a/src/test/java/com/treasure_data/td_import/prepare/TestStrftime.java b/src/test/java/com/treasure_data/td_import/prepare/TestStrftime.java new file mode 100644 index 00000000..18b5d801 --- /dev/null +++ b/src/test/java/com/treasure_data/td_import/prepare/TestStrftime.java @@ -0,0 +1,34 @@ +package com.treasure_data.td_import.prepare; + +import static org.junit.Assert.assertEquals; + +import java.util.Calendar; +import java.util.TimeZone; + +import org.junit.Test; + +public class TestStrftime { + private Strftime t; + + @Test + public void testMillisecond() { + t = new Strftime("%Y-%m-%d %H:%M:%S%z"); + assertEquals(1427342681L, t.getTime("2015-03-26 04:04:41+0000")); + + t = new Strftime("%Y-%m-%d %H:%M:%S.483647%z"); + assertEquals(1427342681L, t.getTime("2015-03-26 04:04:41.483647+0000")); + + t = new Strftime("%Y-%m-%d %H:%M:%S.483%z"); + assertEquals(1427342681L, t.getTime("2015-03-26 04:04:41.483+0000")); + + t = new Strftime("%Y-%m-%d %H:%M:%S.%L%z"); + assertEquals(1427342681L, t.getTime("2015-03-26 04:04:41.483+0000")); + + // Timezone free test + Calendar c = Calendar.getInstance(); + c.set(2015, 2, 26, 4, 4, 41); + c.setTimeZone(TimeZone.getDefault()); + t = new Strftime("%Y-%m-%d %H:%M:%S"); + assertEquals(c.getTimeInMillis() / 1000, t.getTime("2015-03-26 04:04:41.483647")); + } +} \ No newline at end of file