Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Cannot Reproduce
-
Affects Version/s: JiBX 1.1.5
-
Fix Version/s: JiBX 1.1.6
-
Component/s: core
-
Labels:None
-
Number of attachments :
Description
When using the Date serializer/deserializer:
<format type="java.util.Date" deserializer="org.jibx.runtime.Utility.deserializeDate" serializer="org.jibx.runtime.Utility.serializeDate"/>
it is actually one day off. When deserializing a date, it subtracts a day and when serializing it adds a day. Attached is example code of this, but basically the problem is on line 652 of Utility.java:
long day = parseDigits(text, split+4, 2) - 1;
which converts 2008/03/11 to 2008/03/10. It looks like it will also add a day when deserializing it (line 1121 of Utility.java) :
int day = (int)(extra / MSPERDAY) + 1;
The attached code is a modified version of the starter application to include a date and throws an exception if the date is a day off.
I've tried this test case with the current code, and it ran without a problem. However, the date conversion used will not necessarily work as this test code expects with java.util.Calendar - the conversion sets the time values correctly for UTC, while Calendar by default uses the local time zone information. I'll add Javadoc comments to these conversion methods to make this clear.