diff --git a/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java b/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java index 3429d38..357b44a 100644 --- a/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java +++ b/src/main/java/com/solab/iso8583/parse/Date4ParseInfo.java @@ -51,6 +51,7 @@ public class Date4ParseInfo extends FieldParseInfo { //Set the month in the date 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); + cal.set(Calendar.MILLISECOND,0); Date10ParseInfo.adjustWithFutureTolerance(cal); return new IsoValue(type, cal.getTime(), null); } @@ -69,6 +70,7 @@ public class Date4ParseInfo extends FieldParseInfo { //Set the month in the date cal.set(Calendar.MONTH, tens[0] - 1); cal.set(Calendar.DATE, tens[1]); + cal.set(Calendar.MILLISECOND,0); Date10ParseInfo.adjustWithFutureTolerance(cal); return new IsoValue(type, cal.getTime(), null); } diff --git a/src/test/java/j8583/TestDates.java b/src/test/java/j8583/TestDates.java index 10aef99..7d52c18 100644 --- a/src/test/java/j8583/TestDates.java +++ b/src/test/java/j8583/TestDates.java @@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.text.ParseException; import java.util.Date; +import java.util.GregorianCalendar; import org.junit.*; @@ -31,12 +32,15 @@ public class TestDates { @Test public void testDate4FutureTolerance() throws ParseException, IOException { - long now = System.currentTimeMillis(); - long today = now - (now % 86400000l); - Date soon = new Date(now + 50000); + GregorianCalendar today = new GregorianCalendar(); + Date soon = new Date(today.getTime().getTime() + 50000); + today.set(GregorianCalendar.HOUR,0); + today.set(GregorianCalendar.MINUTE,0); + today.set(GregorianCalendar.SECOND,0); + today.set(GregorianCalendar.MILLISECOND,0); byte[] buf = IsoType.DATE4.format(soon).getBytes(); IsoValue comp = new Date4ParseInfo().parse(buf, 0, null); - assert comp.getValue().after(new Date(today)); + Assert.assertEquals(comp.getValue(), today.getTime()); //Now with the binary ByteArrayOutputStream bout = new ByteArrayOutputStream(); comp.write(bout, true);