Class SaxonXMLGregorianCalendar
- All Implemented Interfaces:
Cloneable
CalendarValue
The JAXP specification for this class defines it in terms of XML Schema 1.0 semantics. This implementation is more aligned to the XPath 2.0 semantics of the data types.
Note that this class, unlike the representations of all other data types, is mutable.
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a SaxonXMLGregorianCalendar from a Saxon CalendarValue object -
Method Summary
Modifier and TypeMethodDescriptionvoid
Addduration
to this instance.void
clear()
Unset all fields to undefined.clone()
Creates and returns a copy of this object.int
compare
(XMLGregorianCalendar xmlGregorianCalendar) Compare two instances of W3C XML Schema 1.0 date/time datatypes according to partial order relation defined in W3C XML Schema 1.0 Part 2, Section 3.2.7.3, Order relation on dateTime.int
getDay()
Return day in month orDatatypeConstants.FIELD_UNDEFINED
.getEon()
Return high order component for XML Schema 1.0 dateTime datatype field foryear
.Return XML Schema 1.0 dateTime datatype field foryear
.Return fractional seconds.int
getHour()
Return hours orDatatypeConstants.FIELD_UNDEFINED
.int
Return microsecond precision ofgetFractionalSecond()
.int
Return minutes orDatatypeConstants.FIELD_UNDEFINED
.int
getMonth()
Return number of month orDatatypeConstants.FIELD_UNDEFINED
.int
Return seconds orDatatypeConstants.FIELD_UNDEFINED
.int
Return timezone offset in minutes orDatatypeConstants.FIELD_UNDEFINED
if this optional field is not defined.getTimeZone
(int defaultZoneoffset) Returns ajava.util.TimeZone
for this class.Return the name of the XML Schema date/time type that this instance maps to.int
getYear()
Return low order component for XML Schema 1.0 dateTime datatype field foryear
orDatatypeConstants.FIELD_UNDEFINED
.boolean
isValid()
Validate instance bygetXMLSchemaType()
constraints.Normalize this instance to UTC.void
reset()
Reset thisXMLGregorianCalendar
to its original values.void
setCalendarValue
(CalendarValue value) Set the calendar value of this objectvoid
setDay
(int day) Set days in month.void
setFractionalSecond
(BigDecimal fractional) Set fractional seconds.void
setHour
(int hour) Set hours.void
setMillisecond
(int millisecond) Set milliseconds.void
setMinute
(int minute) Set minutes.void
setMonth
(int month) Set month.void
setSecond
(int second) Set seconds.void
setTimezone
(int offset) Set the number of minutes in the timezone offset.void
setYear
(int year) Set year of XSDdateTime
year field.void
setYear
(BigInteger year) Set low and high order component of XSDdateTime
year field.Convert this SaxonXMLGregorianCalendar to a Saxon CalendarValue objectConvert thisXMLGregorianCalendar
to aGregorianCalendar
.toGregorianCalendar
(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults) Convert thisXMLGregorianCalendar
along with provided parameters to aGregorianCalendar
instance.Return the lexical representation ofthis
instance.Methods inherited from class javax.xml.datatype.XMLGregorianCalendar
equals, getMillisecond, hashCode, setTime, setTime, setTime, toString
-
Constructor Details
-
SaxonXMLGregorianCalendar
Create a SaxonXMLGregorianCalendar from a Saxon CalendarValue object- Parameters:
value
- the CalendarValue
-
-
Method Details
-
setCalendarValue
Set the calendar value of this object- Parameters:
value
- the calendar value
-
clear
public void clear()Unset all fields to undefined.
Set all int fields to
DatatypeConstants.FIELD_UNDEFINED
and reference fields to null.- Specified by:
clear
in classXMLGregorianCalendar
-
reset
public void reset()Reset this
XMLGregorianCalendar
to its original values.Saxon does not attempt to reset to the initial value as defined in the specification of the superclass, because it cannot distinguish the initial setting from subsequent changes. This method is therefore synonymous with
clear()
- Specified by:
reset
in classXMLGregorianCalendar
-
setYear
Set low and high order component of XSD
dateTime
year field.Unset this field by invoking the setter with a parameter value of
null
.- Specified by:
setYear
in classXMLGregorianCalendar
- Parameters:
year
- value constraints summarized in year field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifyear
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setYear
public void setYear(int year) Set year of XSD
dateTime
year field.Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.Note: if the absolute value of the
year
parameter is less than 10^9, the eon component of the XSD year field is set tonull
by this method.- Specified by:
setYear
in classXMLGregorianCalendar
- Parameters:
year
- value constraints are summarized in year field of date/time field mapping table. If year isDatatypeConstants.FIELD_UNDEFINED
, then eon is set tonull
.
-
setMonth
public void setMonth(int month) Set month.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setMonth
in classXMLGregorianCalendar
- Parameters:
month
- value constraints summarized in month field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifmonth
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setDay
public void setDay(int day) Set days in month.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setDay
in classXMLGregorianCalendar
- Parameters:
day
- value constraints summarized in day field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifday
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setTimezone
public void setTimezone(int offset) Set the number of minutes in the timezone offset.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setTimezone
in classXMLGregorianCalendar
- Parameters:
offset
- value constraints summarized in timezone field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifoffset
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setHour
public void setHour(int hour) Set hours.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setHour
in classXMLGregorianCalendar
- Parameters:
hour
- value constraints summarized in hour field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifhour
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setMinute
public void setMinute(int minute) Set minutes.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setMinute
in classXMLGregorianCalendar
- Parameters:
minute
- value constraints summarized in minute field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifminute
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setSecond
public void setSecond(int second) Set seconds.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setSecond
in classXMLGregorianCalendar
- Parameters:
second
- value constraints summarized in second field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifsecond
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setMillisecond
public void setMillisecond(int millisecond) Set milliseconds.
Unset this field by invoking the setter with a parameter value of
DatatypeConstants.FIELD_UNDEFINED
.- Specified by:
setMillisecond
in classXMLGregorianCalendar
- Parameters:
millisecond
- value constraints summarized in millisecond field of date/time field mapping table.- Throws:
IllegalArgumentException
- ifmillisecond
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
setFractionalSecond
Set fractional seconds.
Unset this field by invoking the setter with a parameter value of
null
.- Specified by:
setFractionalSecond
in classXMLGregorianCalendar
- Parameters:
fractional
- value constraints summarized in fractional field of date/time field mapping table.- Throws:
IllegalArgumentException
- iffractional
parameter is outside value constraints for the field as specified in date/time field mapping table.
-
getEon
Return high order component for XML Schema 1.0 dateTime datatype field for
year
.null
if this optional part of the year field is not defined.Value constraints for this value are summarized in year field of date/time field mapping table.
- Specified by:
getEon
in classXMLGregorianCalendar
- Returns:
- eon of this
XMLGregorianCalendar
. The value returned is an integer multiple of 10^9. - See Also:
-
getYear
public int getYear()Return low order component for XML Schema 1.0 dateTime datatype field for
year
orDatatypeConstants.FIELD_UNDEFINED
.Value constraints for this value are summarized in year field of date/time field mapping table.
- Specified by:
getYear
in classXMLGregorianCalendar
- Returns:
- year of this
XMLGregorianCalendar
. - See Also:
-
getEonAndYear
Return XML Schema 1.0 dateTime datatype field for
year
.Value constraints for this value are summarized in year field of date/time field mapping table.
- Specified by:
getEonAndYear
in classXMLGregorianCalendar
- Returns:
- sum of
eon
andBigInteger.valueOf(year)
when both fields are defined. When onlyyear
is defined, return it. When botheon
andyear
are not defined, returnnull
. - See Also:
-
getMonth
public int getMonth()Return number of month or
DatatypeConstants.FIELD_UNDEFINED
.Value constraints for this value are summarized in month field of date/time field mapping table.
- Specified by:
getMonth
in classXMLGregorianCalendar
- Returns:
- year of this
XMLGregorianCalendar
.
-
getDay
public int getDay()Return day in month orDatatypeConstants.FIELD_UNDEFINED
.Value constraints for this value are summarized in day field of date/time field mapping table.
- Specified by:
getDay
in classXMLGregorianCalendar
- See Also:
-
getTimezone
public int getTimezone()Return timezone offset in minutes orDatatypeConstants.FIELD_UNDEFINED
if this optional field is not defined.Value constraints for this value are summarized in timezone field of date/time field mapping table.
- Specified by:
getTimezone
in classXMLGregorianCalendar
- See Also:
-
getHour
public int getHour()Return hours orDatatypeConstants.FIELD_UNDEFINED
. ReturnsDatatypeConstants.FIELD_UNDEFINED
if this field is not defined.Value constraints for this value are summarized in hour field of date/time field mapping table.
- Specified by:
getHour
in classXMLGregorianCalendar
- See Also:
-
getMinute
public int getMinute()Return minutes orDatatypeConstants.FIELD_UNDEFINED
.Returns
DatatypeConstants.FIELD_UNDEFINED
if this field is not defined.Value constraints for this value are summarized in minute field of date/time field mapping table.
- Specified by:
getMinute
in classXMLGregorianCalendar
- See Also:
-
getSecond
public int getSecond()Return seconds or
DatatypeConstants.FIELD_UNDEFINED
.Returns
DatatypeConstants.FIELD_UNDEFINED
if this field is not defined. When this field is not defined, the optional xs:dateTime fractional seconds field, represented bygetFractionalSecond()
andXMLGregorianCalendar.getMillisecond()
, must not be defined.Value constraints for this value are summarized in second field of date/time field mapping table.
- Specified by:
getSecond
in classXMLGregorianCalendar
- Returns:
- Second of this
XMLGregorianCalendar
. - See Also:
-
getMicrosecond
public int getMicrosecond()Return microsecond precision of
getFractionalSecond()
.This method represents a convenience accessor to infinite precision fractional second value returned by
getFractionalSecond()
. The returned value is the rounded down to microseconds value ofgetFractionalSecond()
. WhengetFractionalSecond()
returnsnull
, this method must returnDatatypeConstants.FIELD_UNDEFINED
.Value constraints for this value are summarized in second field of date/time field mapping table.
- Returns:
- Millisecond of this
XMLGregorianCalendar
. - See Also:
-
getFractionalSecond
Return fractional seconds.
null
is returned when this optional field is not defined.Value constraints are detailed in second field of date/time field mapping table.
This optional field can only have a defined value when the xs:dateTime second field, represented by
getSecond()
, does not returnDatatypeConstants.FIELD_UNDEFINED
.- Specified by:
getFractionalSecond
in classXMLGregorianCalendar
- Returns:
- fractional seconds of this
XMLGregorianCalendar
. - See Also:
-
compare
Compare two instances of W3C XML Schema 1.0 date/time datatypes according to partial order relation defined in W3C XML Schema 1.0 Part 2, Section 3.2.7.3, Order relation on dateTime.
xsd:dateTime
datatype field mapping to accessors of this class are defined in date/time field mapping table.- Specified by:
compare
in classXMLGregorianCalendar
- Parameters:
xmlGregorianCalendar
- Instance ofXMLGregorianCalendar
to compare- Returns:
- The relationship between
this
XMLGregorianCalendar
and the specifiedxmlGregorianCalendar
asDatatypeConstants.LESSER
,DatatypeConstants.EQUAL
,DatatypeConstants.GREATER
orDatatypeConstants.INDETERMINATE
. - Throws:
NullPointerException
- ifxmlGregorianCalendar
is null.
-
normalize
Normalize this instance to UTC.
2000-03-04T23:00:00+03:00 normalizes to 2000-03-04T20:00:00Z
Implements W3C XML Schema Part 2, Section 3.2.7.3 (A).
- Specified by:
normalize
in classXMLGregorianCalendar
- Returns:
- a copy of this
XMLGregorianCalendar
normalized to UTC.
-
toXMLFormat
Return the lexical representation of
this
instance. The format is specified in XML Schema 1.0 Part 2, Section 3.2.[7-14].1, Lexical Representation".Specific target lexical representation format is determined by
getXMLSchemaType()
.- Specified by:
toXMLFormat
in classXMLGregorianCalendar
- Returns:
- XML, as
String
, representation of thisXMLGregorianCalendar
- Throws:
IllegalStateException
- if the combination of set fields does not match one of the eight defined XML Schema builtin date/time datatypes.
-
getXMLSchemaType
Return the name of the XML Schema date/time type that this instance maps to. Type is computed based on fields that are set.
- Specified by:
getXMLSchemaType
in classXMLGregorianCalendar
- Returns:
- One of the following class constants:
DatatypeConstants.DATETIME
,DatatypeConstants.TIME
,DatatypeConstants.DATE
,DatatypeConstants.GYEARMONTH
,DatatypeConstants.GMONTHDAY
,DatatypeConstants.GYEAR
,DatatypeConstants.GMONTH
orDatatypeConstants.GDAY
. - Throws:
IllegalStateException
- if the combination of set fields does not match one of the eight defined XML Schema builtin date/time datatypes.
-
isValid
public boolean isValid()Validate instance bygetXMLSchemaType()
constraints.- Specified by:
isValid
in classXMLGregorianCalendar
- Returns:
- true if data values are valid.
-
add
Add
duration
to this instance.The computation is specified in XML Schema 1.0 Part 2, Appendix E, Adding durations to dateTimes. date/time field mapping table defines the mapping from XML Schema 1.0
dateTime
fields to this class' representation of those fields.- Specified by:
add
in classXMLGregorianCalendar
- Parameters:
duration
- Duration to add to thisXMLGregorianCalendar
.- Throws:
NullPointerException
- whenduration
parameter isnull
.
-
toGregorianCalendar
Convert this
XMLGregorianCalendar
to aGregorianCalendar
.When
this
instance has an undefined field, this conversion relies on thejava.util.GregorianCalendar
default for its corresponding field. A notable difference between XML Schema 1.0 date/time datatypes andjava.util.GregorianCalendar
is that Timezone value is optional for date/time datatypes and it is a required field forjava.util.GregorianCalendar
. See javadoc forjava.util.TimeZone.getDefault()
on how the default is determined. To explicitly specify theTimeZone
instance, seetoGregorianCalendar(java.util.TimeZone, Locale, javax.xml.datatype.XMLGregorianCalendar)
.- Specified by:
toGregorianCalendar
in classXMLGregorianCalendar
- See Also:
-
toGregorianCalendar
public GregorianCalendar toGregorianCalendar(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults) Convert this
XMLGregorianCalendar
along with provided parameters to aGregorianCalendar
instance.Since XML Schema 1.0 date/time datetypes has no concept of timezone ids or daylight savings timezone ids, this conversion operation allows the user to explicitly specify one with
timezone
parameter.To compute the return value's
TimeZone
field:- when parameter
timeZone
is non-null, it is the timezone field. - else when
this.getTimezone() != FIELD_UNDEFINED
, create ajava.util.TimeZone
with a custom timezone id using thethis.getTimezone()
. - else when
defaults.getTimezone() != FIELD_UNDEFINED
, create ajava.util.TimeZone
with a custom timezone id usingdefaults.getTimezone()
. - else use the
GregorianCalendar
default timezone value for the host is defined as specified byjava.util.TimeZone.getDefault()
.
To ensure consistency in conversion implementations, the new
GregorianCalendar
should be instantiated in the following manner:- Create a new
java.util.GregorianCalendar(TimeZone, Locale)
with TimeZone set as specified above and theLocale
parameter. - Initialize all GregorianCalendar fields by calling
Calendar.clear()
- Obtain a pure Gregorian Calendar by invoking
GregorianCalendar.setGregorianChange( new Date(Long.MIN_VALUE))
. - Its fields ERA, YEAR, MONTH, DAY_OF_MONTH, HOUR_OF_DAY,
MINUTE, SECOND and MILLISECOND are set using the method
Calendar.set(int,int)
- Specified by:
toGregorianCalendar
in classXMLGregorianCalendar
- Parameters:
timezone
- provide Timezone.null
is a legal value.aLocale
- provide explicit Locale. Use default GregorianCalendar locale if value isnull
.defaults
- provide default field values to use when corresponding field for this instance is FIELD_UNDEFINED or null. Ifdefaults
isnull
or a field within the specifieddefaults
is undefined, just usejava.util.GregorianCalendar
defaults.- Returns:
- a java.util.GregorianCalendar conversion of this instance.
- when parameter
-
getTimeZone
Returns a
java.util.TimeZone
for this class.If timezone field is defined for this instance, returns TimeZone initialized with custom timezone id of zoneoffset. If timezone field is undefined, try the defaultZoneoffset that was passed in. If defaultZoneoffset is FIELD_UNDEFINED, return default timezone for this host. (Same default as java.util.GregorianCalendar).
- Specified by:
getTimeZone
in classXMLGregorianCalendar
- Parameters:
defaultZoneoffset
- default zoneoffset if this zoneoffset isDatatypeConstants.FIELD_UNDEFINED
.- Returns:
- TimeZone for this.
-
clone
Creates and returns a copy of this object.
- Specified by:
clone
in classXMLGregorianCalendar
- Returns:
- copy of this
Object
-
toCalendarValue
Convert this SaxonXMLGregorianCalendar to a Saxon CalendarValue object- Returns:
- the corresponding CalendarValue
-