Class GDate

java.lang.Object
org.apache.xmlbeans.GDate
All Implemented Interfaces:
Serializable, GDateSpecification

public final class GDate extends Object implements GDateSpecification, Serializable
Represents an XML Schema-compatible Gregorian date.

There are many date types in XML Schema, and this type represents the natural union of all those types. A GDate can hold any subset of date fields (Year, Month, Day, Time, Timezone, or some combination). Wherever the specification provides guidance, the guidelines in the XML Schema 1.0 specification (plus published errata) are followed.

Instances may separately have values or no values for the year, month, day-of-month, and time-of-day. Not all operations are meaningful on all combinations.

See Also:
  • Field Summary

    Fields inherited from interface org.apache.xmlbeans.GDateSpecification

    HAS_DAY, HAS_MONTH, HAS_TIME, HAS_TIMEZONE, HAS_YEAR
  • Constructor Summary

    Constructors
    Constructor
    Description
    GDate(int year, int month, int day, int hour, int minute, int second, BigDecimal fraction)
    Constructs a GDate with the specified year, month, day, hours, minutes, seconds, and optional fractional seconds, in an unspecified timezone.
    GDate(int year, int month, int day, int hour, int minute, int second, BigDecimal fraction, int tzSign, int tzHour, int tzMinute)
    Constructs an absolute GDate with the specified year, month, day, hours, minutes, seconds, and optional fractional seconds, and in the timezone specified.
    Constructs a GDate based on a lexical representation.
    GDate(Calendar calendar)
    Constructs a GDate based on a java.util.Calendar.
    GDate(Date date)
    Constructs a GDate based on a java.util.Date.
    Constructs a GDate based on another GDateSpecification.
  • Method Summary

    Modifier and Type
    Method
    Description
    Adds a duration to this GDate, and returns a new GDate.
    The canonical string representation.
    int
    Comparison to another GDate.
    boolean
    GDate is an immutable class, and equality is computed based on its canonical value.
    int
    Returns the builtin type code for the shape of the information contained in this instance, or 0 if the instance doesn't contain information corresponding to a Schema type.
    Retrieves the value of the current time as an XmlCalendar.
    Retrieves the value of the current time as a java.util.Date instance.
    final int
    Gets the day-of-month.
    int
    Returns a combination of flags indicating the information contained by this GDate.
    Gets the fraction-of-second.
    final int
    Gets the hour-of-day.
    int
    Returns the Julian date corresponding to this Gregorian date.
    int
    Gets the rounded millisecond value.
    final int
    Gets the minute-of-hour.
    final int
    Gets the month-of-year.
    final int
    Gets the second-of-minute.
    final int
    Gets the time zone hour.
    final int
    Gets the time zone minutes.
    final int
    Gets the time zone sign.
    final int
    Gets the year.
    final boolean
    True if this date/time specification specifies a full date (year, month, day)
    final boolean
    True if this date/time specification specifies a day-of-month.
    int
    Returns a hash code for this GDate.
    final boolean
    True if this date/time specification specifies a month-of-year.
    final boolean
    True if this date/time specification specifies a time-of-day.
    final boolean
    True if this date/time specification specifies a timezone.
    final boolean
    True if this date/time specification specifies a year.
    final boolean
    Returns true: all GDate instances are immutable.
    boolean
    True if this GDate corresponds to a valid gregorian date value in XML schema.
    Adds a duration to this GDate, and returns a new GDate.
    The natural string representation.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • GDate

      public GDate(CharSequence string)
      Constructs a GDate based on a lexical representation.
    • GDate

      public GDate(int year, int month, int day, int hour, int minute, int second, BigDecimal fraction)
      Constructs a GDate with the specified year, month, day, hours, minutes, seconds, and optional fractional seconds, in an unspecified timezone.

      Note that by not specifying the timezone the GDate becomes partially unordered with respect to times that do have a specified timezone.

    • GDate

      public GDate(int year, int month, int day, int hour, int minute, int second, BigDecimal fraction, int tzSign, int tzHour, int tzMinute)
      Constructs an absolute GDate with the specified year, month, day, hours, minutes, seconds, and optional fractional seconds, and in the timezone specified.

      If you wish to have a time or date that isn't in a specified timezone, then use the constructor that does not include the timezone arguments.

    • GDate

      public GDate(Date date)
      Constructs a GDate based on a java.util.Date.

      The current offset of the default timezone is used as the timezone.

      For example, if eastern daylight time is in effect at the given date, the timezone on the east coast of the united states translates to GMT-05:00 (EST) + 1:00 (DT offset) == GMT-04:00.

    • GDate

      public GDate(Calendar calendar)
      Constructs a GDate based on a java.util.Calendar.

      If the calendar does not have some fields set, the same absence of information is reflected in the GDate. Note that java.util.GregorianCalendar fills in all fields as soon as any are fetched, so constructing a GDate with the same calendar object twice may result in a different GDate because of a changed calendar. Note that org.apache.xmlbeans.XmlCalendar is stable if you re-get a set field, so it does not have the same problem.

    • GDate

      public GDate(GDateSpecification gdate)
      Constructs a GDate based on another GDateSpecification.
  • Method Details

    • isImmutable

      public final boolean isImmutable()
      Returns true: all GDate instances are immutable.
      Specified by:
      isImmutable in interface GDateSpecification
    • getFlags

      public int getFlags()
      Returns a combination of flags indicating the information contained by this GDate. The five flags are HAS_TIMEZONE, HAS_YEAR, HAS_MONTH, HAS_DAY, and HAS_TIME.
      Specified by:
      getFlags in interface GDateSpecification
    • hasTimeZone

      public final boolean hasTimeZone()
      True if this date/time specification specifies a timezone.
      Specified by:
      hasTimeZone in interface GDateSpecification
    • hasYear

      public final boolean hasYear()
      True if this date/time specification specifies a year.
      Specified by:
      hasYear in interface GDateSpecification
    • hasMonth

      public final boolean hasMonth()
      True if this date/time specification specifies a month-of-year.
      Specified by:
      hasMonth in interface GDateSpecification
    • hasDay

      public final boolean hasDay()
      True if this date/time specification specifies a day-of-month.
      Specified by:
      hasDay in interface GDateSpecification
    • hasTime

      public final boolean hasTime()
      True if this date/time specification specifies a time-of-day.
      Specified by:
      hasTime in interface GDateSpecification
    • hasDate

      public final boolean hasDate()
      True if this date/time specification specifies a full date (year, month, day)
      Specified by:
      hasDate in interface GDateSpecification
    • getYear

      public final int getYear()
      Gets the year. Should be a four-digit year specification.
      Specified by:
      getYear in interface GDateSpecification
    • getMonth

      public final int getMonth()
      Gets the month-of-year. January is 1.
      Specified by:
      getMonth in interface GDateSpecification
    • getDay

      public final int getDay()
      Gets the day-of-month. The first day of each month is 1.
      Specified by:
      getDay in interface GDateSpecification
    • getHour

      public final int getHour()
      Gets the hour-of-day. Midnight is 0, and 11PM is 23.
      Specified by:
      getHour in interface GDateSpecification
    • getMinute

      public final int getMinute()
      Gets the minute-of-hour. Range from 0 to 59.
      Specified by:
      getMinute in interface GDateSpecification
    • getSecond

      public final int getSecond()
      Gets the second-of-minute. Range from 0 to 59.
      Specified by:
      getSecond in interface GDateSpecification
    • getFraction

      public final BigDecimal getFraction()
      Gets the fraction-of-second. Range from 0 (inclusive) to 1 (exclusive).
      Specified by:
      getFraction in interface GDateSpecification
    • getTimeZoneSign

      public final int getTimeZoneSign()
      Gets the time zone sign. For time zones east of GMT, this is positive; for time zones west, this is negative.
      Specified by:
      getTimeZoneSign in interface GDateSpecification
    • getTimeZoneHour

      public final int getTimeZoneHour()
      Gets the time zone hour.

      This is always positive: for the sign, look at getTimeZoneSign().

      Specified by:
      getTimeZoneHour in interface GDateSpecification
    • getTimeZoneMinute

      public final int getTimeZoneMinute()
      Gets the time zone minutes.

      This is always positive: for the sign, look at getTimeZoneSign().

      Specified by:
      getTimeZoneMinute in interface GDateSpecification
    • getMillisecond

      public int getMillisecond()
      Gets the rounded millisecond value. Range from 0 to 999
      Specified by:
      getMillisecond in interface GDateSpecification
    • canonicalString

      public String canonicalString()
      The canonical string representation. Specific moments or times-of-day in a specified timezone are normalized to UTC time to produce a canonical string form for them. Other recurring time specifications keep their timezone information.
      Specified by:
      canonicalString in interface GDateSpecification
    • isValid

      public boolean isValid()
      True if this GDate corresponds to a valid gregorian date value in XML schema.
      Specified by:
      isValid in interface GDateSpecification
    • getJulianDate

      public int getJulianDate()
      Returns the Julian date corresponding to this Gregorian date. The Julian date (JD) is a continuous count of days from 1 January 4713 BC.
      Specified by:
      getJulianDate in interface GDateSpecification
    • getCalendar

      public XmlCalendar getCalendar()
      Retrieves the value of the current time as an XmlCalendar.

      XmlCalendar is a subclass of GregorianCalendar which is slightly customized to match XML schema date rules.

      The returned XmlCalendar has only those time and date fields set that are reflected in the GDate object. Because of the way the Calendar contract works, any information in the isSet() vanishes as soon as you view any unset field using get() methods. This means that if it is important to understand which date fields are set, you must call isSet() first before get().

      Specified by:
      getCalendar in interface GDateSpecification
    • getDate

      public Date getDate()
      Retrieves the value of the current time as a java.util.Date instance.
      Specified by:
      getDate in interface GDateSpecification
    • compareToGDate

      public int compareToGDate(GDateSpecification datespec)
      Comparison to another GDate.
      • Returns -1 if this < date. (less-than)
      • Returns 0 if this == date. (equal)
      • Returns 1 if this > date. (greater-than)
      • Returns 2 if this <> date. (incomparable)
      Two instances are incomparable if they have different amounts of information.
      Specified by:
      compareToGDate in interface GDateSpecification
      Parameters:
      datespec - the date to compare against.
    • getBuiltinTypeCode

      public int getBuiltinTypeCode()
      Returns the builtin type code for the shape of the information contained in this instance, or 0 if the instance doesn't contain information corresponding to a Schema type.

      Value will be equal to SchemaType.BTC_NOT_BUILTIN, SchemaType.BTC_G_YEAR, SchemaType.BTC_G_YEAR_MONTH, SchemaType.BTC_G_MONTH, SchemaType.BTC_G_MONTH_DAY, SchemaType.BTC_G_DAY, SchemaType.BTC_DATE, SchemaType.BTC_DATE_TIME, or SchemaType.BTC_TIME.

      Specified by:
      getBuiltinTypeCode in interface GDateSpecification
    • add

      public GDate add(GDurationSpecification duration)
      Adds a duration to this GDate, and returns a new GDate.
    • subtract

      public GDate subtract(GDurationSpecification duration)
      Adds a duration to this GDate, and returns a new GDate.
    • equals

      public boolean equals(Object obj)
      GDate is an immutable class, and equality is computed based on its canonical value.
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Returns a hash code for this GDate.
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      The natural string representation. This represents the information that is available, including timezone. For types that correspond to defined schema types (schemaBuiltinTypeCode() > 0), this provides the natural lexical representation.

      When both time and timezone are specified, this string is not the canonical representation unless the timezone is UTC (Z) (since the same moment in time can be expressed in different timezones). To get a canonical string, use the canonicalString() method.

      Specified by:
      toString in interface GDateSpecification
      Overrides:
      toString in class Object