org.apache.xmlbeans

## Class GDuration

- java.lang.Object
- - org.apache.xmlbeans.GDuration

- All Implemented Interfaces:
    Serializable, GDurationSpecification

      public final class GDuration
      extends Object
      implements GDurationSpecification, Serializable

  Represents an XML Schema-compatible duration.

  A duration is made up of a number of years, months, days, hours, minutes, seconds, and fractions of seconds. See the XML Schema specification section on xs:duration for details on the rules for comparing durations and adding durations to dates.

  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GDuration()` Constructs an empty GDuration representing zero seconds.
    `GDuration(CharSequence str)` Constructs a GDuration from a lexical representation.
    `GDuration(GDurationSpecification gDuration)` Constructs a GDuration from another GDurationSpecification.
    `GDuration(int sign, int year, int month, int day, int hour, int minute, int second, BigDecimal fraction)` Constructs a GDuration with the specified sign, year, month, day, hours, minutes, seconds, and optional fractional seconds.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `GDuration` | `add(GDurationSpecification duration)` Returns a new GDuration which is the sum of this one and the supplied duration.
    `Object` | `clone()` Builds another GDate with the same value as this one.
    `int` | `compareToGDuration(GDurationSpecification duration)` Comparison to another GDuration.
    `boolean` | `equals(Object obj)` Two GDurations are equal if all their fields are equal.
    `int` | `getDay()` Gets the day-of-month component.
    `BigDecimal` | `getFraction()` Gets the fraction-of-second.
    `int` | `getHour()` Gets the hour-of-day component.
    `int` | `getMinute()` Gets the minute-of-hour component.
    `int` | `getMonth()` Gets the month-of-year component.
    `int` | `getSecond()` Gets the second-of-minute component.
    `int` | `getSign()` Returns the sign of the duration: +1 is forwards and -1 is backwards in time.
    `int` | `getYear()` Gets the year component.
    `int` | `hashCode()`
    `boolean` | `isImmutable()` All GDuration instances return true.
    `boolean` | `isValid()` Returns true if all of the individual components of the duration are nonnegative.
    `GDuration` | `subtract(GDurationSpecification duration)` Returns a new GDuration which is the result of subtracting the supplied duration from this one.
    `String` | `toString()` The natural string representation of the duration.

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### GDuration

          public GDuration()

      Constructs an empty GDuration representing zero seconds.

    - #### GDuration

          public GDuration(CharSequence str)

      Constructs a GDuration from a lexical representation. The lexical space contains the union of the lexical spaces of all the schema date/time types (except for duration).

    - #### GDuration

          public GDuration(int sign,
                           int year,
                           int month,
                           int day,
                           int hour,
                           int minute,
                           int second,
                           BigDecimal fraction)

      Constructs a GDuration with the specified sign, year, month, day, hours, minutes, seconds, and optional fractional seconds.
      Parameters:
        `sign` - +1 for a positive duration, -1 for a negative duration
      Throws:
        `IllegalArgumentException` - if the sign is not 1 or -1

    - #### GDuration

          public GDuration(GDurationSpecification gDuration)

      Constructs a GDuration from another GDurationSpecification.

  - ### Method Detail

    - #### clone

          public Object clone()

      Builds another GDate with the same value as this one.
      Overrides:
        `clone` in class `Object`

    - #### isImmutable

          public final boolean isImmutable()

      All GDuration instances return true.
      Specified by:
        `isImmutable` in interface `GDurationSpecification`

    - #### getSign

          public final int getSign()

      Returns the sign of the duration: +1 is forwards and -1 is backwards in time.
      Specified by:
        `getSign` in interface `GDurationSpecification`

    - #### getYear

          public final int getYear()

      Gets the year component.
      Specified by:
        `getYear` in interface `GDurationSpecification`

    - #### getMonth

          public final int getMonth()

      Gets the month-of-year component.
      Specified by:
        `getMonth` in interface `GDurationSpecification`

    - #### getDay

          public final int getDay()

      Gets the day-of-month component.
      Specified by:
        `getDay` in interface `GDurationSpecification`

    - #### getHour

          public final int getHour()

      Gets the hour-of-day component.
      Specified by:
        `getHour` in interface `GDurationSpecification`

    - #### getMinute

          public final int getMinute()

      Gets the minute-of-hour component.
      Specified by:
        `getMinute` in interface `GDurationSpecification`

    - #### getSecond

          public final int getSecond()

      Gets the second-of-minute component.
      Specified by:
        `getSecond` in interface `GDurationSpecification`

    - #### getFraction

          public BigDecimal getFraction()

      Gets the fraction-of-second. Range from 0 (inclusive) to 1 (exclusive).
      Specified by:
        `getFraction` in interface `GDurationSpecification`

    - #### isValid

          public boolean isValid()

      Returns true if all of the individual components of the duration are nonnegative.
      Specified by:
        `isValid` in interface `GDurationSpecification`

    - #### compareToGDuration

          public final int compareToGDuration(GDurationSpecification duration)

      Comparison to another GDuration.
      - Returns -1 if this < duration. (less-than)
      - Returns 0 if this == duration. (equal)
      - Returns 1 if this > duration. (greater-than)
      - Returns 2 if this <> duration. (incomparable)
      Two instances are incomparable if they have different amounts of information.
      Specified by:
        `compareToGDuration` in interface `GDurationSpecification`

    - #### toString

          public String toString()

      The natural string representation of the duration.

      Any components that are zero are omitted. Note that if the duration is invalid, i.e., it has negative components, those negative components are serialized out here. To check for validity, use the isValid() method; and to normalize most durations to a valid form use the normalize() method.

      Overrides:
        `toString` in class `Object`

    - #### add

          public GDuration add(GDurationSpecification duration)

      Returns a new GDuration which is the sum of this one and the supplied duration. Does a fieldwise addition, with no normalization.

    - #### subtract

          public GDuration subtract(GDurationSpecification duration)

      Returns a new GDuration which is the result of subtracting the supplied duration from this one. Does a fieldwise subtraction, with no normalization.

    - #### equals

          public boolean equals(Object obj)

      Two GDurations are equal if all their fields are equal. The equals function does not apply normalizatin.
      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`