diff --git a/main/src/com/google/refine/util/ParsingUtilities.java b/main/src/com/google/refine/util/ParsingUtilities.java index 4de898685..f3ec984e7 100644 --- a/main/src/com/google/refine/util/ParsingUtilities.java +++ b/main/src/com/google/refine/util/ParsingUtilities.java @@ -38,9 +38,10 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.UnsupportedEncodingException; -import java.text.SimpleDateFormat; +import java.time.Instant; import java.time.LocalDateTime; import java.time.OffsetDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Properties; @@ -193,6 +194,10 @@ public class ParsingUtilities { } static public LocalDateTime stringToLocalDate(String s) { - return LocalDateTime.parse(s, DateTimeFormatter.ISO_LOCAL_DATE_TIME); + if (s.endsWith("Z")) { // UTC time + Instant instant = Instant.parse(s); + return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + } else + return LocalDateTime.parse(s, DateTimeFormatter.ISO_LOCAL_DATE_TIME); } } diff --git a/main/tests/server/src/com/google/refine/tests/util/ParsingUtilitiesTests.java b/main/tests/server/src/com/google/refine/tests/util/ParsingUtilitiesTests.java index 87a649d86..07ce07286 100644 --- a/main/tests/server/src/com/google/refine/tests/util/ParsingUtilitiesTests.java +++ b/main/tests/server/src/com/google/refine/tests/util/ParsingUtilitiesTests.java @@ -107,4 +107,25 @@ public class ParsingUtilitiesTests extends RefineTest { Assert.assertEquals(zdtString, historyEntryDate); } + + @Test + public void parseProjectModifiedBeforeJDK8() { + String modified = "2014-01-15T21:46:25Z"; + Assert.assertNotEquals(ParsingUtilities.stringToLocalDate(modified).toString(), + modified); + } + + @Test + public void strSubstitutorTest() { + Map data = new HashMap(6); + + data.put("value", "1234"); + data.put("field_format", "String"); + + StrSubstitutor sub = new StrSubstitutor(data); + String message = "The value ${value} in row ${row_number} and column ${column_number} is not type ${field_type} and format ${field_format}"; + String result = sub.replace(message); + System.out.println("XXXXXXXX:" + result); + Assert.assertTrue(result.contains("1234")); + } }