# Starboard Module Reference: time.h

## Macros

### kSbTimeDay

One day in SbTime units (microseconds).

### kSbTimeHour

One hour in SbTime units (microseconds).

### kSbTimeMax

The maximum value of an SbTime.

### kSbTimeMillisecond

One millisecond in SbTime units (microseconds).

### kSbTimeMinute

One minute in SbTime units (microseconds).

### kSbTimeNanosecondsPerMicrosecond

How many nanoseconds in one SbTime unit (microseconds).

### kSbTimeSecond

One second in SbTime units (microseconds).

### kSbTimeToPosixDelta

A term that can be added to an SbTime to convert it into the number of microseconds since the POSIX epoch.

## Typedefs

### SbTime

The number of microseconds since the epoch of January 1, 1601 UTC, or the number of microseconds between two times. Always microseconds, ALWAYS UTC.

#### Definition

``````typedef int64_t SbTime
``````

### SbTimeMonotonic

A number of microseconds from some point. The main property of this time is that it increases monotonically. It should also be as high-resolution a timer as we can get on a platform. So, it is good for measuring the time between two calls without worrying about a system clock adjustment. It's not good for getting the wall clock time.

#### Definition

``````typedef int64_t SbTimeMonotonic
``````

## Functions

### SbTimeFromPosix

Converts microseconds from the POSIX epoch into an `SbTime`.

`time`: A time that measures the number of microseconds since January 1, 1970, 00:00:00, UTC.

#### Declaration

``````static SbTime SbTimeFromPosix(int64_t time)
``````

### SbTimeGetMonotonicNow

Gets a monotonically increasing time representing right now.

#### Declaration

``````SbTimeMonotonic SbTimeGetMonotonicNow()
``````

Gets a monotonically increasing time representing how long the current thread has been in the executing state (i.e. not pre-empted nor waiting on an event). This is not necessarily total time and is intended to allow measuring thread execution time between two timestamps. If this is not available then SbTimeGetMonotonicNow() should be used.

#### Declaration

``````SbTimeMonotonic SbTimeGetMonotonicThreadNow()
``````

### SbTimeGetNow

Gets the current system time as an `SbTime`.

#### Declaration

``````SbTime SbTimeGetNow()
``````

Returns whether the current platform supports time thread now

#### Declaration

``````bool SbTimeIsTimeThreadNowSupported()
``````

### SbTimeNarrow

Safely narrows a number from a more precise unit to a less precise one. This function rounds negative values toward negative infinity.

#### Declaration

``````static int64_t SbTimeNarrow(int64_t time, int64_t divisor)
``````

### SbTimeToPosix

Converts `SbTime` into microseconds from the POSIX epoch.

`time`: A time that is either measured in microseconds since the epoch of January 1, 1601, UTC, or that measures the number of microseconds between two times.

#### Declaration

``````static int64_t SbTimeToPosix(SbTime time)
``````