# TimeInterval

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

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'),
        isStartIncluded : true,
        isStopIncluded : 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 386

An immutable empty interval.

#### data : *
Core/TimeInterval.js 90

Gets or sets the data associated with this interval.

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

Gets whether or not this interval is empty.

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

Gets or sets whether or not the start time is included in this interval.

Default Value: `true`

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

Gets or sets whether or not the stop time is included in this interval.

Default Value: `true`

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

Gets or sets the start time of this interval.

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

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 312

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 143

Creates a new instance from a 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.

##### Throws:

- DeveloperError if options.iso8601 does not match proper formatting.

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

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 183

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 341

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 353

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 367

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 376

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 402

Function interface for comparing interval data.

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

##### Returns:

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

#### MergeCallback(leftData, rightData) → *
Core/TimeInterval.js 393

Function interface for merging interval data.

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

##### Returns:

The result of merging the two data instances.