# Timespan

<a id="timespan"></a>

# Timespan

```cpp
#include <icy/datetime.h>

class Timespan
```

[Defined in src/base/include/icy/datetime.h:119](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L119)

A class that represents time spans up to microsecond resolution.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Timespan`](#timespan-1)  | Creates a zero [Timespan](#timespan). |
|  | [`Timespan`](#timespan-2)  | Creates a [Timespan](#timespan). |
|  | [`Timespan`](#timespan-3)  | Creates a [Timespan](#timespan). Useful for creating a [Timespan](#timespan) from a struct timeval. |
|  | [`Timespan`](#timespan-4)  | Creates a [Timespan](#timespan). |
|  | [`Timespan`](#timespan-5)  | Creates a [Timespan](#timespan) from another one. |
|  | [`~Timespan`](#timespan-6)  | Destroys the [Timespan](#timespan). |
| [`Timespan`](#timespan) & | [`operator=`](#operator-108)  | Assignment operator. |
| [`Timespan`](#timespan) & | [`operator=`](#operator-109)  | Assignment operator. |
| [`Timespan`](#timespan) & | [`assign`](#assign-4)  | Assigns a new span. |
| [`Timespan`](#timespan) & | [`assign`](#assign-5)  | Assigns a new span. Useful for assigning from a struct timeval. |
| `void` | [`swap`](#swap-8)  | Swaps the [Timespan](#timespan) with another one. |
| `bool` | [`operator==`](#operator-110) `const` `inline` |  |
| `bool` | [`operator!=`](#operator-111) `const` `inline` |  |
| `bool` | [`operator>`](#operator-112) `const` `inline` |  |
| `bool` | [`operator>=`](#operator-113) `const` `inline` |  |
| `bool` | [`operator<`](#operator-114) `const` `inline` |  |
| `bool` | [`operator<=`](#operator-115) `const` `inline` |  |
| `bool` | [`operator==`](#operator-116) `const` `inline` |  |
| `bool` | [`operator!=`](#operator-117) `const` `inline` |  |
| `bool` | [`operator>`](#operator-118) `const` `inline` |  |
| `bool` | [`operator>=`](#operator-119) `const` `inline` |  |
| `bool` | [`operator<`](#operator-120) `const` `inline` |  |
| `bool` | [`operator<=`](#operator-121) `const` `inline` |  |
| [`Timespan`](#timespan) | [`operator+`](#operator-122) `const` |  |
| [`Timespan`](#timespan) | [`operator-`](#operator-123) `const` |  |
| [`Timespan`](#timespan) & | [`operator+=`](#operator-124)  |  |
| [`Timespan`](#timespan) & | [`operator-=`](#operator-125)  |  |
| [`Timespan`](#timespan) | [`operator+`](#operator-126) `const` |  |
| [`Timespan`](#timespan) | [`operator-`](#operator-127) `const` |  |
| [`Timespan`](#timespan) & | [`operator+=`](#operator-128)  |  |
| [`Timespan`](#timespan) & | [`operator-=`](#operator-129)  |  |
| `int` | [`days`](#days) `const` `inline` | Returns the number of days. |
| `int` | [`hours`](#hours) `const` `inline` | Returns the number of hours (0 to 23). |
| `int` | [`totalHours`](#totalhours) `const` `inline` | Returns the total number of hours. |
| `int` | [`minutes`](#minutes) `const` `inline` | Returns the number of minutes (0 to 59). |
| `int` | [`totalMinutes`](#totalminutes) `const` `inline` | Returns the total number of minutes. |
| `int` | [`seconds`](#seconds-1) `const` `inline` | Returns the number of seconds (0 to 59). |
| `int` | [`totalSeconds`](#totalseconds) `const` `inline` | Returns the total number of seconds. |
| `int` | [`milliseconds`](#milliseconds) `const` `inline` | Returns the number of milliseconds (0 to 999). |
| [`TimeDiff`](#timediff) | [`totalMilliseconds`](#totalmilliseconds) `const` `inline` | Returns the total number of milliseconds. |
| `int` | [`microseconds`](#microseconds) `const` `inline` | Returns the fractions of a millisecond in microseconds (0 to 999). |
| `int` | [`useconds`](#useconds) `const` `inline` | Returns the fractions of a second in microseconds (0 to 999999). |
| [`TimeDiff`](#timediff) | [`totalMicroseconds`](#totalmicroseconds) `const` `inline` | Returns the total number of microseconds. |

---

<a id="timespan-1"></a>

### Timespan

```cpp
Timespan()
```

[Defined in src/base/include/icy/datetime.h:125](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L125)

Creates a zero [Timespan](#timespan).

---

<a id="timespan-2"></a>

### Timespan

```cpp
Timespan(TimeDiff microseconds)
```

[Defined in src/base/include/icy/datetime.h:128](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L128)

Creates a [Timespan](#timespan).

---

<a id="timespan-3"></a>

### Timespan

```cpp
Timespan(long seconds, long microseconds)
```

[Defined in src/base/include/icy/datetime.h:132](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L132)

Creates a [Timespan](#timespan). Useful for creating a [Timespan](#timespan) from a struct timeval.

---

<a id="timespan-4"></a>

### Timespan

```cpp
Timespan(int days, int hours, int minutes, int seconds, int microseconds)
```

[Defined in src/base/include/icy/datetime.h:135](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L135)

Creates a [Timespan](#timespan).

---

<a id="timespan-5"></a>

### Timespan

```cpp
Timespan(const Timespan & timespan)
```

[Defined in src/base/include/icy/datetime.h:138](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L138)

Creates a [Timespan](#timespan) from another one.

---

<a id="timespan-6"></a>

### ~Timespan

```cpp
~Timespan()
```

[Defined in src/base/include/icy/datetime.h:141](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L141)

Destroys the [Timespan](#timespan).

---

<a id="operator-108"></a>

### operator=

```cpp
Timespan & operator=(const Timespan & timespan)
```

[Defined in src/base/include/icy/datetime.h:144](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L144)

Assignment operator.

---

<a id="operator-109"></a>

### operator=

```cpp
Timespan & operator=(TimeDiff microseconds)
```

[Defined in src/base/include/icy/datetime.h:147](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L147)

Assignment operator.

---

<a id="assign-4"></a>

### assign

```cpp
Timespan & assign(int days, int hours, int minutes, int seconds, int microseconds)
```

[Defined in src/base/include/icy/datetime.h:150](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L150)

Assigns a new span.

---

<a id="assign-5"></a>

### assign

```cpp
Timespan & assign(long seconds, long microseconds)
```

[Defined in src/base/include/icy/datetime.h:154](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L154)

Assigns a new span. Useful for assigning from a struct timeval.

---

<a id="swap-8"></a>

### swap

```cpp
void swap(Timespan & timespan)
```

[Defined in src/base/include/icy/datetime.h:157](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L157)

Swaps the [Timespan](#timespan) with another one.

---

<a id="operator-110"></a>

### operator==

`const` `inline`

```cpp
inline bool operator==(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:159](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L159)

---

<a id="operator-111"></a>

### operator!=

`const` `inline`

```cpp
inline bool operator!=(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:160](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L160)

---

<a id="operator-112"></a>

### operator>

`const` `inline`

```cpp
inline bool operator>(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:161](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L161)

---

<a id="operator-113"></a>

### operator>=

`const` `inline`

```cpp
inline bool operator>=(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:162](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L162)

---

<a id="operator-114"></a>

### operator<

`const` `inline`

```cpp
inline bool operator<(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:163](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L163)

---

<a id="operator-115"></a>

### operator<=

`const` `inline`

```cpp
inline bool operator<=(const Timespan & ts) const
```

[Defined in src/base/include/icy/datetime.h:164](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L164)

---

<a id="operator-116"></a>

### operator==

`const` `inline`

```cpp
inline bool operator==(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:166](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L166)

---

<a id="operator-117"></a>

### operator!=

`const` `inline`

```cpp
inline bool operator!=(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:167](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L167)

---

<a id="operator-118"></a>

### operator>

`const` `inline`

```cpp
inline bool operator>(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:168](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L168)

---

<a id="operator-119"></a>

### operator>=

`const` `inline`

```cpp
inline bool operator>=(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:169](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L169)

---

<a id="operator-120"></a>

### operator<

`const` `inline`

```cpp
inline bool operator<(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:170](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L170)

---

<a id="operator-121"></a>

### operator<=

`const` `inline`

```cpp
inline bool operator<=(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:171](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L171)

---

<a id="operator-122"></a>

### operator+

`const`

```cpp
Timespan operator+(const Timespan & d) const
```

[Defined in src/base/include/icy/datetime.h:173](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L173)

---

<a id="operator-123"></a>

### operator-

`const`

```cpp
Timespan operator-(const Timespan & d) const
```

[Defined in src/base/include/icy/datetime.h:174](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L174)

---

<a id="operator-124"></a>

### operator+=

```cpp
Timespan & operator+=(const Timespan & d)
```

[Defined in src/base/include/icy/datetime.h:175](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L175)

---

<a id="operator-125"></a>

### operator-=

```cpp
Timespan & operator-=(const Timespan & d)
```

[Defined in src/base/include/icy/datetime.h:176](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L176)

---

<a id="operator-126"></a>

### operator+

`const`

```cpp
Timespan operator+(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:178](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L178)

---

<a id="operator-127"></a>

### operator-

`const`

```cpp
Timespan operator-(TimeDiff microseconds) const
```

[Defined in src/base/include/icy/datetime.h:179](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L179)

---

<a id="operator-128"></a>

### operator+=

```cpp
Timespan & operator+=(TimeDiff microseconds)
```

[Defined in src/base/include/icy/datetime.h:180](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L180)

---

<a id="operator-129"></a>

### operator-=

```cpp
Timespan & operator-=(TimeDiff microseconds)
```

[Defined in src/base/include/icy/datetime.h:181](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L181)

---

<a id="days"></a>

### days

`const` `inline`

```cpp
inline int days() const
```

[Defined in src/base/include/icy/datetime.h:184](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L184)

Returns the number of days.

---

<a id="hours"></a>

### hours

`const` `inline`

```cpp
inline int hours() const
```

[Defined in src/base/include/icy/datetime.h:187](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L187)

Returns the number of hours (0 to 23).

---

<a id="totalhours"></a>

### totalHours

`const` `inline`

```cpp
inline int totalHours() const
```

[Defined in src/base/include/icy/datetime.h:190](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L190)

Returns the total number of hours.

---

<a id="minutes"></a>

### minutes

`const` `inline`

```cpp
inline int minutes() const
```

[Defined in src/base/include/icy/datetime.h:193](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L193)

Returns the number of minutes (0 to 59).

---

<a id="totalminutes"></a>

### totalMinutes

`const` `inline`

```cpp
inline int totalMinutes() const
```

[Defined in src/base/include/icy/datetime.h:196](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L196)

Returns the total number of minutes.

---

<a id="seconds-1"></a>

### seconds

`const` `inline`

```cpp
inline int seconds() const
```

[Defined in src/base/include/icy/datetime.h:199](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L199)

Returns the number of seconds (0 to 59).

---

<a id="totalseconds"></a>

### totalSeconds

`const` `inline`

```cpp
inline int totalSeconds() const
```

[Defined in src/base/include/icy/datetime.h:202](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L202)

Returns the total number of seconds.

---

<a id="milliseconds"></a>

### milliseconds

`const` `inline`

```cpp
inline int milliseconds() const
```

[Defined in src/base/include/icy/datetime.h:205](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L205)

Returns the number of milliseconds (0 to 999).

---

<a id="totalmilliseconds"></a>

### totalMilliseconds

`const` `inline`

```cpp
inline TimeDiff totalMilliseconds() const
```

[Defined in src/base/include/icy/datetime.h:208](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L208)

Returns the total number of milliseconds.

---

<a id="microseconds"></a>

### microseconds

`const` `inline`

```cpp
inline int microseconds() const
```

[Defined in src/base/include/icy/datetime.h:212](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L212)

Returns the fractions of a millisecond in microseconds (0 to 999).

---

<a id="useconds"></a>

### useconds

`const` `inline`

```cpp
inline int useconds() const
```

[Defined in src/base/include/icy/datetime.h:216](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L216)

Returns the fractions of a second in microseconds (0 to 999999).

---

<a id="totalmicroseconds"></a>

### totalMicroseconds

`const` `inline`

```cpp
inline TimeDiff totalMicroseconds() const
```

[Defined in src/base/include/icy/datetime.h:219](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L219)

Returns the total number of microseconds.

## Public Static Attributes

| Return | Name | Description |
|--------|------|-------------|
| const [`TimeDiff`](#timediff) | [`MILLISECONDS`](#milliseconds-1) `static` | The number of microseconds in a millisecond. |
| const [`TimeDiff`](#timediff) | [`SECONDS`](#seconds-2) `static` | The number of microseconds in a second. |
| const [`TimeDiff`](#timediff) | [`MINUTES`](#minutes-1) `static` | The number of microseconds in a minute. |
| const [`TimeDiff`](#timediff) | [`HOURS`](#hours-1) `static` | The number of microseconds in a hour. |
| const [`TimeDiff`](#timediff) | [`DAYS`](#days-1) `static` | The number of microseconds in a day. |

---

<a id="milliseconds-1"></a>

### MILLISECONDS

`static`

```cpp
const TimeDiff MILLISECONDS
```

Type: const [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:221](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L221)

The number of microseconds in a millisecond.

---

<a id="seconds-2"></a>

### SECONDS

`static`

```cpp
const TimeDiff SECONDS
```

Type: const [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:222](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L222)

The number of microseconds in a second.

---

<a id="minutes-1"></a>

### MINUTES

`static`

```cpp
const TimeDiff MINUTES
```

Type: const [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:223](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L223)

The number of microseconds in a minute.

---

<a id="hours-1"></a>

### HOURS

`static`

```cpp
const TimeDiff HOURS
```

Type: const [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:224](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L224)

The number of microseconds in a hour.

---

<a id="days-1"></a>

### DAYS

`static`

```cpp
const TimeDiff DAYS
```

Type: const [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:225](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L225)

The number of microseconds in a day.

## Public Types

| Name | Description |
|------|-------------|
| [`TimeDiff`](#timediff)  |  |

---

<a id="timediff"></a>

### TimeDiff

```cpp
using TimeDiff = Timestamp::TimeDiff
```

Type: [`Timestamp::TimeDiff`](https://auscaster.com/icey/docs/api-reference/icy-Timestamp.md#timediff-1)

[Defined in src/base/include/icy/datetime.h:122](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L122)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`TimeDiff`](#timediff) | [`_span`](#_span)  |  |

---

<a id="_span"></a>

### _span

```cpp
TimeDiff _span
```

Type: [`TimeDiff`](#timediff)

[Defined in src/base/include/icy/datetime.h:228](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L228)
