Timestamp representation, computation, and conversion.
More...
Timestamp representation, computation, and conversion.
|
file | timex.h |
| Utility library for comparing and computing timestamps.
|
|
file | tm.h |
| Utility library for struct tm .
|
|
|
#define | US_PER_SEC (1000000LU) |
| The number of microseconds per second.
|
|
#define | SEC_PER_MIN (60LU) |
| The number of seconds per minute.
|
|
#define | CS_PER_SEC (100LU) |
| The number of centiseconds per second.
|
|
#define | MS_PER_SEC (1000LU) |
| The number of milliseconds per second.
|
|
#define | US_PER_MS (1000LU) |
| The number of microseconds per millisecond.
|
|
#define | US_PER_CS (10000U) |
| The number of microseconds per centisecond.
|
|
#define | NS_PER_US (1000LU) |
| The number of nanoseconds per microsecond.
|
|
#define | NS_PER_SEC (1000000000U) |
| The number of nanoseconds per second.
|
|
#define | TIMEX_MAX_STR_LEN (20) |
| The maximum length of the string representation of a timex timestamp.
|
|
#define | TM_WDAY_SUN (0) |
| Sunday in struct tm::tm_wday .
|
|
#define | TM_WDAY_MON (1) |
| Monday in struct tm::tm_wday .
|
|
#define | TM_WDAY_TUE (2) |
| Tuesday in struct tm::tm_wday .
|
|
#define | TM_WDAY_WED (3) |
| Wednesday in struct tm::tm_wday .
|
|
#define | TM_WDAY_THU (4) |
| Thursday in struct tm::tm_wday .
|
|
#define | TM_WDAY_FRI (5) |
| Friday in struct tm::tm_wday .
|
|
#define | TM_WDAY_SAT (6) |
| Saturday in struct tm::tm_wday .
|
|
#define | TM_MON_JAN ( 0) |
| January in struct tm::tm_mon
|
|
#define | TM_MON_FEB ( 1) |
| February in struct tm::tm_mon
|
|
#define | TM_MON_MAR ( 2) |
| March in struct tm::tm_mon
|
|
#define | TM_MON_APR ( 3) |
| April in struct tm::tm_mon
|
|
#define | TM_MON_MAY ( 4) |
| May in struct tm::tm_mon
|
|
#define | TM_MON_JUN ( 5) |
| June in struct tm::tm_mon
|
|
#define | TM_MON_JUL ( 6) |
| July in struct tm::tm_mon
|
|
#define | TM_MON_AUG ( 7) |
| August in struct tm::tm_mon
|
|
#define | TM_MON_SEP ( 8) |
| September in struct tm::tm_mon
|
|
#define | TM_MON_OCT ( 9) |
| October in struct tm::tm_mon
|
|
#define | TM_MON_NOV (10) |
| November in struct tm::tm_mon
|
|
#define | TM_MON_DEC (11) |
| December in struct tm::tm_mon
|
|
|
timex_t | timex_add (const timex_t a, const timex_t b) |
| Adds two timestamps. More...
|
|
timex_t | timex_sub (const timex_t a, const timex_t b) |
| Subtracts two timestamps. More...
|
|
timex_t | timex_set (uint32_t seconds, uint32_t microseconds) |
| Initializes a timex timestamp. More...
|
|
int | timex_cmp (const timex_t a, const timex_t b) |
| Compares two timex timestamps. More...
|
|
static void | timex_normalize (timex_t *time) |
| Corrects timex structure so that microseconds < 1000000. More...
|
|
static int | timex_isnormalized (const timex_t *time) |
| Tests a timex timestamp for normalization. More...
|
|
static uint64_t | timex_uint64 (const timex_t a) |
| Converts a timex timestamp to a 64 bit value. More...
|
|
static timex_t | timex_from_uint64 (const uint64_t timestamp) |
| Converts a 64 bit value of microseconds to a timex timestamp. More...
|
|
const char * | timex_to_str (timex_t t, char *timestamp) |
| Converts a timex timestamp to a string. More...
|
|
int | tm_is_leap_year (unsigned year) CONST |
| Tells if a given year is a leap year in the Gregorian calendar. More...
|
|
int | tm_doomsday (int year) CONST |
| Returns the congruent weekday of the Doomsday (March 0). More...
|
|
void | tm_get_wyday (int year, int mon, int mday, int *wday, int *yday) |
| Calculates the day of the year and the weekday of a given date. More...
|
|
void | tm_fill_derived_values (struct tm *tm) |
| Fills in struct tm::tm_wday and struct tm::tm_yday given a date. More...
|
|
int | tm_is_valid_date (int year, int mon, int mday) CONST |
| Tests if a date is valid. More...
|
|
int | tm_is_valid_time (int hour, int min, int sec) CONST |
| Shallow test if a time is valid. More...
|
|
◆ timex_add()
Adds two timestamps.
- Parameters
-
[in] | a | First summand |
[in] | b | Second summand |
- Returns
- The sum of the two timestamps
◆ timex_cmp()
Compares two timex timestamps.
- Parameters
-
[in] | a | The first timestamp to compare to |
[in] | b | The second timestamp to compare with |
- Returns
- -1 when a is smaller
-
0 if equal
-
1 if a is bigger
◆ timex_from_uint64()
static timex_t timex_from_uint64 |
( |
const uint64_t |
timestamp | ) |
|
|
inlinestatic |
Converts a 64 bit value of microseconds to a timex timestamp.
- Parameters
-
[in] | timestamp | The timestamp to convert. |
- Returns
- a timex representation of an uint64 timestamp.
Definition at line 179 of file timex.h.
◆ timex_isnormalized()
static int timex_isnormalized |
( |
const timex_t * |
time | ) |
|
|
inlinestatic |
Tests a timex timestamp for normalization.
- Parameters
-
[in] | time | Pointer to the timestamp to check |
- Returns
- true for a normalized timex_t
-
false otherwise
Definition at line 155 of file timex.h.
◆ timex_normalize()
static void timex_normalize |
( |
timex_t * |
time | ) |
|
|
inlinestatic |
Corrects timex structure so that microseconds < 1000000.
- Parameters
-
[in,out] | time | Pointer to the timestamp to normalize |
Definition at line 141 of file timex.h.
◆ timex_set()
timex_t timex_set |
( |
uint32_t |
seconds, |
|
|
uint32_t |
microseconds |
|
) |
| |
Initializes a timex timestamp.
- Parameters
-
[in] | seconds | Number of seconds to set |
[in] | microseconds | Number of microseconds to set |
- Returns
- The initialized timex timestamp
◆ timex_sub()
Subtracts two timestamps.
- Parameters
-
[in] | a | The minuend |
[in] | b | The subtrahend |
- Returns
- The difference a - b
◆ timex_to_str()
const char* timex_to_str |
( |
timex_t |
t, |
|
|
char * |
timestamp |
|
) |
| |
Converts a timex timestamp to a string.
- Precondition
- memory at timestamp >= TIMEX_MAX_STR_LEN
- Parameters
-
[in] | t | The timestamp to convert |
[out] | timestamp | The output char buffer for the converted timestamp |
- Note
- The timestamp will be normalized
- Returns
- A pointer to the string representation of the timestamp
◆ timex_uint64()
static uint64_t timex_uint64 |
( |
const timex_t |
a | ) |
|
|
inlinestatic |
Converts a timex timestamp to a 64 bit value.
- Parameters
-
[in] | a | The timestamp to convert |
- Returns
- timex representation as uint64_t
Definition at line 167 of file timex.h.
◆ tm_doomsday()
int tm_doomsday |
( |
int |
year | ) |
|
Returns the congruent weekday of the Doomsday (March 0).
Only applies for years in the Gregorian calendar.
- Parameters
-
[in] | year | The year. Probably should be ≥ 1582, but needs to be ≥ 1. |
- Returns
- The result
% 7
is the weekday of the Doomsday of the given year.
◆ tm_fill_derived_values()
void tm_fill_derived_values |
( |
struct tm * |
tm | ) |
|
Fills in struct tm::tm_wday
and struct tm::tm_yday
given a date.
struct tm::tm_year
, struct tm::tm_mon
, and struct tm::tm_mday
need to be set before you call this function.
- Parameters
-
[in,out] | tm | The datum to operate on. |
◆ tm_get_wyday()
void tm_get_wyday |
( |
int |
year, |
|
|
int |
mon, |
|
|
int |
mday, |
|
|
int * |
wday, |
|
|
int * |
yday |
|
) |
| |
Calculates the day of the year and the weekday of a given date.
Illegal dates are not caught.
- Parameters
-
[in] | year | The year. Probably should be ≥ 1582, but needs to be ≥ 1. |
[in] | mon | The month, TM_MON_JAN to TM_MON_DEC. |
[in] | mday | The day in the month, 1 to 31. |
[out] | wday | Returns the day of the week. |
[out] | yday | Returns the day of the year (Jan 1st is 0). |
◆ tm_is_leap_year()
int tm_is_leap_year |
( |
unsigned |
year | ) |
|
Tells if a given year is a leap year in the Gregorian calendar.
- Parameters
-
[in] | year | The year. Probably should be ≥ 1582, but needs to be ≥ 1. |
- Returns
1
if it is a leap year, 0
if it is a common year.
◆ tm_is_valid_date()
int tm_is_valid_date |
( |
int |
year, |
|
|
int |
mon, |
|
|
int |
mday |
|
) |
| |
Tests if a date is valid.
Dates before 1582-10-15 are invalid.
- Parameters
-
[in] | year | The year. |
[in] | mon | The month. |
[in] | mday | The day in the month. |
- Returns
- 0 if the date is invalid.
◆ tm_is_valid_time()
int tm_is_valid_time |
( |
int |
hour, |
|
|
int |
min, |
|
|
int |
sec |
|
) |
| |
Shallow test if a time is valid.
This function accepts leap seconds at any given time, because the timezone is unknown.
- Parameters
-
[in] | hour | The hour. |
[in] | min | The minutes. |
[in] | sec | The seconds. |
- Returns
- 0 if the time is invalid.
◆ TM_MON_DAYS
const int8_t TM_MON_DAYS[12] |
◆ TM_MON_DAYS_ACCU
const int16_t TM_MON_DAYS_ACCU[12] |