diff --git a/src/main/java/com/solab/iso8583/parse/Date10ParseInfo.java b/src/main/java/com/solab/iso8583/parse/Date10ParseInfo.java index 8add9ab..cad85a6 100644 --- a/src/main/java/com/solab/iso8583/parse/Date10ParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/Date10ParseInfo.java @@ -67,13 +67,7 @@ public class Date10ParseInfo extends DateTimeParseInfo { cal.set(Calendar.SECOND, ((buf[pos + 8] - 48) * 10) + buf[pos + 9] - 48); } cal.set(Calendar.MILLISECOND,0); - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - adjustWithFutureTolerance(cal); - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, true); } @Override diff --git a/src/main/java/com/solab/iso8583/parse/Date12ParseInfo.java b/src/main/java/com/solab/iso8583/parse/Date12ParseInfo.java index 0a98e15..8a39354 100644 --- a/src/main/java/com/solab/iso8583/parse/Date12ParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/Date12ParseInfo.java @@ -59,13 +59,7 @@ public class Date12ParseInfo extends DateTimeParseInfo { cal.set(Calendar.YEAR, 2000+year); } cal.set(Calendar.MILLISECOND,0); - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - adjustWithFutureTolerance(cal); - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, true); } @Override diff --git a/src/main/java/com/solab/iso8583/parse/Date14ParseInfo.java b/src/main/java/com/solab/iso8583/parse/Date14ParseInfo.java index fe8682b..18692ff 100644 --- a/src/main/java/com/solab/iso8583/parse/Date14ParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/Date14ParseInfo.java @@ -53,13 +53,7 @@ public class Date14ParseInfo extends DateTimeParseInfo { cal.set(Calendar.SECOND, ((buf[pos + 12] - 48) * 10) + buf[pos + 13] - 48); } cal.set(Calendar.MILLISECOND,0); - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - adjustWithFutureTolerance(cal); - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, true); } @Override diff --git a/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java b/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java index b810f88..2d25203 100644 --- a/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java @@ -62,13 +62,7 @@ public class Date4ParseInfo extends DateTimeParseInfo { cal.set(Calendar.MONTH, ((buf[pos] - 48) * 10) + buf[pos + 1] - 49); cal.set(Calendar.DATE, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 48); } - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - Date10ParseInfo.adjustWithFutureTolerance(cal); - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, true); } @Override diff --git a/src/main/java/com/solab/iso8583/parse/DateExpParseInfo.java b/src/main/java/com/solab/iso8583/parse/DateExpParseInfo.java index 39c8c1e..f6de515 100644 --- a/src/main/java/com/solab/iso8583/parse/DateExpParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/DateExpParseInfo.java @@ -64,12 +64,7 @@ public class DateExpParseInfo extends DateTimeParseInfo { + ((buf[pos] - 48) * 10) + buf[pos + 1] - 48); cal.set(Calendar.MONTH, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 49); } - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, false); } @Override diff --git a/src/main/java/com/solab/iso8583/parse/DateTimeParseInfo.java b/src/main/java/com/solab/iso8583/parse/DateTimeParseInfo.java index 2897b35..251cfbe 100644 --- a/src/main/java/com/solab/iso8583/parse/DateTimeParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/DateTimeParseInfo.java @@ -1,8 +1,10 @@ package com.solab.iso8583.parse; import com.solab.iso8583.IsoType; +import com.solab.iso8583.IsoValue; import java.util.Calendar; +import java.util.Date; import java.util.TimeZone; /** @@ -48,4 +50,21 @@ public abstract class DateTimeParseInfo extends FieldParseInfo { } } + protected IsoValue createValue(Calendar cal, boolean adjusting) { + if (tz != null) { + cal.setTimeZone(tz); + } else if (getDefaultTimeZone() != null) { + cal.setTimeZone(getDefaultTimeZone()); + } + if (adjusting) { + adjustWithFutureTolerance(cal); + } + IsoValue v = new IsoValue<>(type, cal.getTime(), null); + if (tz != null) { + v.setTimeZone(tz); + } else if (getDefaultTimeZone() != null) { + v.setTimeZone(getDefaultTimeZone()); + } + return v; + } } diff --git a/src/main/java/com/solab/iso8583/parse/TimeParseInfo.java b/src/main/java/com/solab/iso8583/parse/TimeParseInfo.java index a92f7d0..5b8226f 100644 --- a/src/main/java/com/solab/iso8583/parse/TimeParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/TimeParseInfo.java @@ -59,12 +59,7 @@ public class TimeParseInfo extends DateTimeParseInfo { cal.set(Calendar.MINUTE, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 48); cal.set(Calendar.SECOND, ((buf[pos + 4] - 48) * 10) + buf[pos + 5] - 48); } - if (tz != null) { - cal.setTimeZone(tz); - } else if (getDefaultTimeZone() != null) { - cal.setTimeZone(getDefaultTimeZone()); - } - return new IsoValue<>(type, cal.getTime(), null); + return createValue(cal, false); } @Override