src/main/java/org/embulk/input/zendesk/utils/ZendeskDateUtils.java in embulk-input-zendesk-0.3.5 vs src/main/java/org/embulk/input/zendesk/utils/ZendeskDateUtils.java in embulk-input-zendesk-0.3.6

- old
+ new

@@ -7,10 +7,11 @@ import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.time.format.ResolverStyle; import java.util.Optional; public class ZendeskDateUtils { private ZendeskDateUtils() @@ -19,13 +20,18 @@ public static long isoToEpochSecond(final String time) { final Optional<String> pattern = supportedTimeFormat(time); if (pattern.isPresent()) { - final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern.get()).withZone(ZoneOffset.UTC); - final OffsetDateTime offsetDateTime = LocalDateTime.parse(time, formatter).atOffset(ZoneOffset.UTC); - return offsetDateTime.toInstant().getEpochSecond(); + final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern.get()).withZone(ZoneOffset.UTC).withResolverStyle(ResolverStyle.STRICT); + try { + final OffsetDateTime offsetDateTime = LocalDateTime.parse(time, formatter).atOffset(ZoneOffset.UTC); + return offsetDateTime.toInstant().getEpochSecond(); + } + catch (DateTimeParseException e) { + throw new DataException(e.getMessage()); + } } throw new DataException("Fail to parse value '" + time + "' follow formats " + ZendeskConstants.Misc.SUPPORT_DATE_TIME_FORMAT.toString()); } @@ -44,11 +50,10 @@ return Optional.empty(); } public static String convertToDateTimeFormat(String datetime, String dateTimeFormat) { - return OffsetDateTime.ofInstant(Instant.ofEpochSecond(ZendeskDateUtils.isoToEpochSecond(datetime)), ZoneOffset.UTC) - .format(DateTimeFormatter.ofPattern(dateTimeFormat)); + return Instant.ofEpochSecond(ZendeskDateUtils.isoToEpochSecond(datetime)).atOffset(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern(dateTimeFormat)); } // start_time should be start from 0 public static long getStartTime(final String time) {