According to date/time field mapping table the 24 hours is valid: for a value of 24, the minute and second field must be zero per XML Schema Errata.
Therefore following test should print OK:
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
class test {
public static void main(String [] args) throws Exception {
DatatypeFactory factory = null;
try {
factory = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException dce) {
dce.printStackTrace();
}
XMLGregorianCalendar calendar =
factory.newXMLGregorianCalendar();
calendar.setTime(24, 0, 0);
System.out.println("OK");
}
}
But it throws
Exception in thread "main" java.lang.IllegalArgumentException: Invalid value 24 for Hour field.
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.checkFieldValueConstraint(XMLGregorianCalendarImpl.java:1303)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setHour(XMLGregorianCalendarImpl.java:1310)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setTime(XMLGregorianCalendarImpl.java:1346)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setTime(XMLGregorianCalendarImpl.java:1290)
at pack.test.main(test.java:26)
###@###.### 2005-03-10 15:42:48 GMT
Therefore following test should print OK:
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
class test {
public static void main(String [] args) throws Exception {
DatatypeFactory factory = null;
try {
factory = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException dce) {
dce.printStackTrace();
}
XMLGregorianCalendar calendar =
factory.newXMLGregorianCalendar();
calendar.setTime(24, 0, 0);
System.out.println("OK");
}
}
But it throws
Exception in thread "main" java.lang.IllegalArgumentException: Invalid value 24 for Hour field.
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.checkFieldValueConstraint(XMLGregorianCalendarImpl.java:1303)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setHour(XMLGregorianCalendarImpl.java:1310)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setTime(XMLGregorianCalendarImpl.java:1346)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.setTime(XMLGregorianCalendarImpl.java:1290)
at pack.test.main(test.java:26)
###@###.### 2005-03-10 15:42:48 GMT