# TimeInterval

#### new Cesium.TimeInterval(options)
Core/TimeInterval.js 71

  An interval defined by a start and a stop time; optionally including those times as part of the interval. Arbitrary data can optionally be associated with each instance for used with `TimeIntervalCollection`.

  Name | Type | Description
  --- | --- | ---
  `options` | Object | optional Object with the following properties:
  Name | Type | Default | Description
  --- | --- | --- | ---
  `start` | JulianDate | `new JulianDate()` | optional The start time of the interval.
  `stop` | JulianDate | `new JulianDate()` | optional The stop time of the interval.
  `isStartIncluded` | Boolean | `true` | optional `true` if `options.start` is included in the interval, `false` otherwise.
  `isStopIncluded` | Boolean | `true` | optional `true` if `options.stop` is included in the interval, `false` otherwise.
  `data` | Object |  | optional Arbitrary data associated with this interval.

  ##### Examples:

      // Create an instance that spans August 1st, 1980 and is associated
      // with a Cartesian position.
      var timeInterval = new Cesium.TimeInterval({
          start : Cesium.JulianDate.fromIso8601('1980-08-01T00:00:00Z'),
          stop : Cesium.JulianDate.fromIso8601('1980-08-02T00:00:00Z'),
          isStartTimeIncluded : true,
          iSStopTimeIncluded : false,
          data : Cesium.Cartesian3.fromDegrees(39.921037, -75.170082)
      });

      // Create two instances from ISO 8601 intervals with associated numeric data
      // then compute their intersection, summing the data they contain.
      var left = Cesium.TimeInterval.fromIso8601({
          iso8601 : '2000/2010',
          data : 2
      });

      var right = Cesium.TimeInterval.fromIso8601({
          iso8601 : '1995/2005',
          data : 3
      });

      //The result of the below intersection will be an interval equivalent to
      //var intersection = Cesium.TimeInterval.fromIso8601({
      //  iso8601 : '2000/2005',
      //  data : 5
      //});
      var intersection = new Cesium.TimeInterval();
      Cesium.TimeInterval.intersect(left, right, intersection, function(leftData, rightData) {
          return leftData + rightData;
      });

      // Check if an interval contains a specific time.
      var dateToCheck = Cesium.JulianDate.fromIso8601('1982-09-08T11:30:00Z');
      var containsDate = Cesium.TimeInterval.contains(timeInterval, dateToCheck);

### Members

#### static constantCesium.TimeInterval.EMPTY : TimeInterval
Core/TimeInterval.js 396

  An immutable empty interval.

#### data : Object
Core/TimeInterval.js 89

  Gets or sets the data associated with this interval.

#### readonlyisEmpty : Boolean
Core/TimeInterval.js 113

  Gets whether or not this interval is empty.

#### isStartIncluded : Boolean
Core/TimeInterval.js 96

  Gets or sets whether or not the start time is included in this interval.
  Default Value: `true`

#### isStopIncluded : Boolean
Core/TimeInterval.js 103

  Gets or sets whether or not the stop time is included in this interval.
  Default Value: `true`

#### start : JulianDate
Core/TimeInterval.js 77

  Gets or sets the start time of this interval.

#### stop : JulianDate
Core/TimeInterval.js 83

  Gets or sets the stop time of this interval.

### Methods

#### staticCesium.TimeInterval.clone(timeInterval, result) → TimeInterval
Core/TimeInterval.js 198

  Duplicates the provided instance.

  Name | Type | Description
  --- | --- | ---
  `timeInterval` | TimeInterval | optional The instance to clone.
  `result` | TimeInterval | optional An existing instance to use for the result.

  ##### Returns:

  The modified result parameter or a new instance if none was provided.

#### staticCesium.TimeInterval.contains(timeInterval, julianDate) → Boolean
Core/TimeInterval.js 318

  Checks if the specified date is inside the provided interval.

  Name | Type | Description
  --- | --- | ---
  `timeInterval` | TimeInterval | The interval.
  `julianDate` | JulianDate | The date to check.

  ##### Returns:

  `true` if the interval contains the specified date, `false` otherwise.

#### staticCesium.TimeInterval.equals(left, right, dataComparer) → Boolean
Core/TimeInterval.js 221

  Compares two instances and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `left` | TimeInterval | optional The first instance.
  `right` | TimeInterval | optional The second instance.
  `dataComparer` | TimeInterval~DataComparer | optional A function which compares the data of the two intervals. If omitted, reference equality is used.

  ##### Returns:

  `true` if the dates are equal; otherwise, `false`.

#### staticCesium.TimeInterval.equalsEpsilon(left, right, epsilon, dataComparer) → Boolean
Core/TimeInterval.js 244

  Compares two instances and returns `true` if they are within `epsilon` seconds of each other. That is, in order for the dates to be considered equal (and for this function to return `true`), the absolute value of the difference between them, in seconds, must be less than `epsilon`.

  Name | Type | Description
  --- | --- | ---
  `left` | TimeInterval | optional The first instance.
  `right` | TimeInterval | optional The second instance.
  `epsilon` | Number | The maximum number of seconds that should separate the two instances.
  `dataComparer` | TimeInterval~DataComparer | optional A function which compares the data of the two intervals. If omitted, reference equality is used.

  ##### Returns:

  `true` if the two dates are within `epsilon` seconds of each other; otherwise `false`.

#### staticCesium.TimeInterval.fromIso8601(options, result) → TimeInterval
Core/TimeInterval.js 140

  Creates a new instance from an ISO 8601 interval.

  Name | Type | Description
  --- | --- | ---
  `options` | Object | Object with the following properties:
  Name | Type | Default | Description
  --- | --- | --- | ---
  `iso8601` | String |  | An ISO 8601 interval.
  `isStartIncluded` | Boolean | `true` | optional `true` if `options.start` is included in the interval, `false` otherwise.
  `isStopIncluded` | Boolean | `true` | optional `true` if `options.stop` is included in the interval, `false` otherwise.
  `data` | Object |  | optional Arbitrary data associated with this interval.
  `result` | TimeInterval | optional An existing instance to use for the result.

  ##### Returns:

  The modified result parameter or a new instance if none was provided.

#### staticCesium.TimeInterval.intersect(left, right, result, mergeCallback) → TimeInterval
Core/TimeInterval.js 270

  Computes the intersection of two intervals, optionally merging their data.

  Name | Type | Description
  --- | --- | ---
  `left` | TimeInterval | The first interval.
  `right` | TimeInterval | optional The second interval.
  `result` | TimeInterval | An existing instance to use for the result.
  `mergeCallback` | TimeInterval~MergeCallback | optional A function which merges the data of the two intervals. If omitted, the data from the left interval will be used.

  ##### Returns:

  The modified result parameter.

#### staticCesium.TimeInterval.toIso8601(timeInterval, precision) → String
Core/TimeInterval.js 181

  Creates an ISO8601 representation of the provided interval.

  Name | Type | Description
  --- | --- | ---
  `timeInterval` | TimeInterval | The interval to be converted.
  `precision` | Number | optional The number of fractional digits used to represent the seconds component. By default, the most precise representation is used.

  ##### Returns:

  The ISO8601 representation of the provided interval.

#### clone(result) → TimeInterval
Core/TimeInterval.js 351

  Duplicates this instance.

  Name | Type | Description
  --- | --- | ---
  `result` | TimeInterval | optional An existing instance to use for the result.

  ##### Returns:

  The modified result parameter or a new instance if none was provided.

#### equals(right, dataComparer) → Boolean
Core/TimeInterval.js 363

  Compares this instance against the provided instance componentwise and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | TimeInterval | optional The right hand side interval.
  `dataComparer` | TimeInterval~DataComparer | optional A function which compares the data of the two intervals. If omitted, reference equality is used.

  ##### Returns:

  `true` if they are equal, `false` otherwise.

#### equalsEpsilon(right, epsilon, dataComparer) → Boolean
Core/TimeInterval.js 377

  Compares this instance against the provided instance componentwise and returns `true` if they are within the provided epsilon, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | TimeInterval | optional The right hand side interval.
  `epsilon` | Number | The epsilon to use for equality testing.
  `dataComparer` | TimeInterval~DataComparer | optional A function which compares the data of the two intervals. If omitted, reference equality is used.

  ##### Returns:

  `true` if they are within the provided epsilon, `false` otherwise.

#### toString() → String
Core/TimeInterval.js 386

  Creates a string representing this TimeInterval in ISO8601 format.

  ##### Returns:

  A string representing this TimeInterval in ISO8601 format.

### Type Definitions

#### DataComparer(leftData, rightData) → Boolean
Core/TimeInterval.js 412

  Function interface for comparing interval data.

  Name | Type | Description
  --- | --- | ---
  `leftData` | Object | The first data instance.
  `rightData` | Object | The second data instance.

  ##### Returns:

  `true` if the provided instances are equal, `false` otherwise.

#### MergeCallback(leftData, rightData) → Object
Core/TimeInterval.js 403

  Function interface for merging interval data.

  Name | Type | Description
  --- | --- | ---
  `leftData` | Object | The first data instance.
  `rightData` | Object | The second data instance.

  ##### Returns:

  The result of merging the two data instances.