Class TimeDuration

java.lang.Object
ucar.nc2.units.TimeDuration

public class TimeDuration extends Object
Implements the thredds "duration" XML element type: specifies a length of time. This is really the same as a ucar.nc2.units.TimeUnit, but it allows xsd:duration syntax as well as udunits syntax. It also keeps track if the text is empty.

A duration can be one of the following:

  1. a valid udunits string compatible with "secs"
  2. an xsd:duration type specified in the following form "PnYnMnDTnHnMnS" where:
    • P indicates the period (required)
    • nY indicates the number of years
    • nM indicates the number of months
    • nD indicates the number of days
    • T indicates the start of a time section (required if you are going to specify hours, minutes, or seconds)
    • nH indicates the number of hours
    • nM indicates the number of minutes
    • nS indicates the number of seconds
See Also:
  • "https://www.unidata.ucar.edu/projects/THREDDS/tech/catalog/InvCatalogSpec.html#durationType"
  • Constructor Details

    • TimeDuration

      public TimeDuration(TimeDuration src)
      Copy constructor.
      Parameters:
      src - copy this
    • TimeDuration

      public TimeDuration(TimeUnit timeUnit)
      Construct from a TimeUnit.
      Parameters:
      timeUnit - copy this
    • TimeDuration

      public TimeDuration(String text) throws ParseException
      Construct from 1) udunit time unit string, 2) xsd:duration syntax, 3) blank string.
      Parameters:
      text - parse this text.
      Throws:
      ParseException - if invalid text.
  • Method Details

    • parseW3CDuration

      public static TimeDuration parseW3CDuration(String text) throws ParseException
      A time span as defined in the W3C XML Schema 1.0 specification: "PnYnMnDTnHnMnS, where nY represents the number of years, nM the number of months, nD the number of days, 'T' is the date/time separator, nH the number of hours, nM the number of minutes and nS the number of seconds. The number of seconds can include decimal digits to arbitrary precision."
      Parameters:
      text - parse this text, format PnYnMnDTnHnMnS
      Returns:
      TimeDuration
      Throws:
      ParseException - when text is misformed
    • getValue

      public double getValue()
      Get the duration in natural units, ie units of getTimeUnit()
      Returns:
      the duration in natural units
    • getValue

      public double getValue(TimeUnit want) throws ucar.units.ConversionException
      Get the time duration in a specified unit of time.
      Parameters:
      want - in these units
      Returns:
      the duration in units
      Throws:
      ucar.units.ConversionException - is specified unit is not compatible with time
    • getValue

      public double getValue(String unit)
    • getValueInSeconds

      public double getValueInSeconds()
      Get the duration in seconds
      Returns:
      the duration in seconds
    • setValueInSeconds

      public void setValueInSeconds(double secs)
      Set the duration in seconds
      Parameters:
      secs - the duration in seconds
    • isBlank

      public boolean isBlank()
      If this is a blank string
      Returns:
      true if this is a blank string
    • getTimeUnit

      public TimeUnit getTimeUnit()
      Get the corresponding time unit
      Returns:
      the corresponding time unit
    • getText

      public String getText()
      Get the String text
      Returns:
      the text
    • toString

      public String toString()
      String representation
      Overrides:
      toString in class Object
      Returns:
      getText()
    • hashCode

      public int hashCode()
      Override to be consistent with equals
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      TimeDurations with same value in seconds are equals
      Overrides:
      equals in class Object
    • add

      public Date add(Date d)