DatatypeFactory.newInstance() is used to create a new DatatypeFactory.
The following implementation resolution mechanisms are used in the following order:

If the system property specified by DatatypeFactory.DATATYPEFACTORY_PROPERTY, "javax.xml.datatype.DatatypeFactory",
exists, a class with the name of the property's value is instantiated.
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException.

If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a PropertiesObject.
The PropertiesObject is then queried for the property as documented in the prior step
and processed as documented in the prior step.

The services resolution mechanism is used, e.g. META-INF/services/java.xml.datatype.DatatypeFactory.
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException.

The final mechanism is to attempt to instantiate the Class specified by
DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS, "javax.xml.datatype.DatatypeFactoryImpl".
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException.

newDuration(long durationInMilliseconds)
Obtain a new instance of a Duration
specifying the Duration as milliseconds.

javax.xml.datatype.Duration

newDuration(java.lang.String lexicalRepresentation)
Obtain a new instance of a Duration
specifying the Duration as its string representation, "PnYnMnDTnHnMnS",
as defined in XML Schema 1.0 section 3.2.6.1.

newDuration

Obtain a new instance of a Duration
specifying the Duration as its string representation, "PnYnMnDTnHnMnS",
as defined in XML Schema 1.0 section 3.2.6.1.

XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration as:

duration represents a duration of time.
The value space of duration is a six-dimensional space where the coordinates designate the
Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively.
These components are ordered in their significance by their order of appearance i.e. as
year, month, day, hour, minute, and second.

All six values are set and availabe from the created Duration

The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.

Specified by:

newDuration in class javax.xml.datatype.DatatypeFactory

Parameters:

lexicalRepresentation - String representation of a Duration.

Returns:

New Duration created from parsing the lexicalRepresentation.

Throws:

java.lang.IllegalArgumentException - If lexicalRepresentation is not a valid representation of a Duration.

newDuration

Obtain a new instance of a Duration
specifying the Duration as milliseconds.

XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration as:

duration represents a duration of time.
The value space of duration is a six-dimensional space where the coordinates designate the
Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively.
These components are ordered in their significance by their order of appearance i.e. as
year, month, day, hour, minute, and second.

All six values are set by computing their values from the specified milliseconds
and are availabe using the get methods of the created Duration.
The values conform to and are defined by:

The default start instance is defined by GregorianCalendar's use of the start of the epoch: i.e.,
Calendar.YEAR = 1970,
Calendar.MONTH = Calendar.JANUARY,
Calendar.DATE = 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getMonths() and Duration.getDays() can be influenced.

Obtain a new instance of a Duration
specifying the Duration as isPositive, years, months, days, hours, minutes, seconds.

The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.

Specified by:

newDuration in class javax.xml.datatype.DatatypeFactory

Parameters:

isPositive - Set to false to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.

years - of this Duration

months - of this Duration

days - of this Duration

hours - of this Duration

minutes - of this Duration

seconds - of this Duration

Returns:

New Duration created from the specified values.

Throws:

java.lang.IllegalArgumentException - If values are not a valid representation of a Duration.

newXMLGregorianCalendar

Constructor of value spaces that a
java.util.GregorianCalendar instance would need to convert to an
XMLGregorianCalendar instance.

XMLGregorianCalendar eon and
fractionalSecond are set to null

A DatatypeConstants.FIELD_UNDEFINED value indicates that field isnot set.

Overrides:

newXMLGregorianCalendar in class javax.xml.datatype.DatatypeFactory

Parameters:

year - of XMLGregorianCalendar to be created.

month - of XMLGregorianCalendar to be created.

day - of XMLGregorianCalendar to be created.

hour - of XMLGregorianCalendar to be created.

minute - of XMLGregorianCalendar to be created.

second - of XMLGregorianCalendar to be created.

millisecond - of XMLGregorianCalendar to be created.

timezone - of XMLGregorianCalendar to be created.

Returns:

XMLGregorianCalendar created from specified values.

Throws:

java.lang.IllegalArgumentException - If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar instance
as determined by XMLGregorianCalendar.isValid().

java.lang.IllegalArgumentException - If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar instance
as determined by XMLGregorianCalendar.isValid().