From b2ff35f5abd46253dd40b590537063c845113ef0 Mon Sep 17 00:00:00 2001 From: Jan Lapp Date: Thu, 19 Jul 2018 08:44:18 +0200 Subject: [PATCH] JSONCommunicator: use ZonedDateTime to parse OCPP DateTime (ISO8601) strings --- .../eu/chargetime/ocpp/JSONCommunicator.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java index e5b941f76..23c785da4 100644 --- a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java +++ b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java @@ -9,10 +9,10 @@ import org.slf4j.LoggerFactory; import java.lang.reflect.Type; -import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.ZonedDateTime; +import java.time.format.DateTimeParseException; import java.util.Calendar; -import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; @@ -110,16 +110,8 @@ private class CalendarDeserializer implements JsonDeserializer { public Calendar deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { String dateString = json.getAsJsonPrimitive().getAsString(); - - hasLongDateFormat = dateString.length() == DATE_FORMAT_WITH_MS_LENGTH; - SimpleDateFormat formatter = new SimpleDateFormat(hasLongDateFormat ? DATE_FORMAT_WITH_MS : DATE_FORMAT); - - formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00")); - Calendar calendar = Calendar.getInstance(); - Date date = formatter.parse(dateString); - calendar.setTime(date); - return calendar; - } catch (ParseException e) { + return GregorianCalendar.from(ZonedDateTime.parse(dateString)); + } catch (DateTimeParseException e) { throw new JsonParseException(e); } }