# Poco

# class Timestamp

Library: Foundation
Package: DateTime
Header: Poco/Timestamp.h

## Description

A Timestamp stores a monotonic* time value with (theoretical) microseconds resolution. Timestamps can be compared with each other and simple arithmetic is supported.

[*] Note that Timestamp values are only monotonic as long as the systems's clock is monotonic as well (and not, e.g. set back due to time synchronization or other reasons).

Timestamps are UTC (Coordinated Universal Time) based and thus independent of the timezone in effect on the system.

The internal reference time is the Unix epoch, midnight, January 1, 1970.

## Member Summary

Member Functions: elapsed, epochMicroseconds, epochTime, fromEpochTime, fromUtcTime, isElapsed, operator !=, operator +, operator +=, operator -, operator -=, operator <, operator <=, operator =, operator ==, operator >, operator >=, raw, resolution, swap, update, utcTime

## Types Aliases

### TimeDiff

using TimeDiff = Int64;

Difference between two TimeVal values in microseconds.

### TimeVal

using TimeVal = Int64;

Monotonic UTC time value in microsecond resolution, with base time midnight, January 1, 1970.

### UtcTimeVal

using UtcTimeVal = Int64;

Monotonic UTC time value in 100 nanosecond resolution, with base time midnight, October 15, 1582.

## Constructors

### Timestamp

Timestamp();

Creates a timestamp with the current time.

### Timestamp

Timestamp(
TimeVal tv
);

Creates a timestamp from the given time value (microseconds since midnight, January 1, 1970).

### Timestamp

Timestamp(
const Timestamp & other
);

Copy constructor.

## Destructor

### ~Timestamp

~Timestamp();

Destroys the timestamp

## Member Functions

### elapsed

TimeDiff elapsed() const;

Returns the time elapsed since the time denoted by the timestamp. Equivalent to Timestamp() - *this.

### epochMicroseconds

TimeVal epochMicroseconds() const;

Returns the timestamp expressed in microseconds since the Unix epoch, midnight, January 1, 1970.

### epochTime

std::time_t epochTime() const;

Returns the timestamp expressed in time_t. time_t base time is midnight, January 1, 1970. Resolution is one second.

### fromEpochTime

static Timestamp fromEpochTime(
std::time_t t
);

Creates a timestamp from a std::time_t.

### fromUtcTime

static Timestamp fromUtcTime(
UtcTimeVal val
);

Creates a timestamp from a UTC time value (100 nanosecond intervals since midnight, October 15, 1582).

### isElapsed

bool isElapsed(
TimeDiff interval
) const;

Returns true if and only if the given interval has passed since the time denoted by the timestamp.

### operator !=

bool operator != (
const Timestamp & ts
) const;

### operator +

Timestamp operator + (
TimeDiff d
) const;

### operator +

Timestamp operator + (
const Timespan & span
) const;

### operator +=

Timestamp & operator += (
TimeDiff d
);

### operator +=

Timestamp & operator += (
const Timespan & span
);

### operator -

Timestamp operator - (
TimeDiff d
) const;

### operator -

Timestamp operator - (
const Timespan & span
) const;

### operator -

TimeDiff operator - (
const Timestamp & ts
) const;

### operator -=

Timestamp & operator -= (
TimeDiff d
);

### operator -=

Timestamp & operator -= (
const Timespan & span
);

### operator <

bool operator < (
const Timestamp & ts
) const;

### operator <=

bool operator <= (
const Timestamp & ts
) const;

### operator =

Timestamp & operator = (
const Timestamp & other
);

### operator =

Timestamp & operator = (
TimeVal tv
);

### operator ==

bool operator == (
const Timestamp & ts
) const;

### operator >

bool operator > (
const Timestamp & ts
) const;

### operator >=

bool operator >= (
const Timestamp & ts
) const;

### raw

TimeVal raw() const;

Returns the raw time value.

Same as epochMicroseconds().

### resolution

static constexpr TimeDiff resolution();

Returns the resolution in units per second. Since the timestamp has microsecond resolution, the returned value is always 1000000.

### swap

void swap(
Timestamp & timestamp
) noexcept;

Swaps the Timestamp with another one.

### update

void update();

Updates the Timestamp with the current time.

### utcTime

UtcTimeVal utcTime() const;

Returns the timestamp expressed in UTC-based time. UTC base time is midnight, October 15, 1582. Resolution is 100 nanoseconds.

## Variables

### TIMEVAL_MAX

static const TimeVal TIMEVAL_MAX;

Maximum timestamp value.

### TIMEVAL_MIN

static const TimeVal TIMEVAL_MIN;

Minimum timestamp value.