XROAD
xroad_datetime.h File Reference
#include <stdint.h>
#include "xroad_time.h"
#include "xroad_date.h"
#include "xroad_tzone.h"
Include dependency graph for xroad_datetime.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xroad_datetime_t
 

Macros

#define xroad_datetime_null   (xroad_datetime_t){0}
 
#define xroad_datetime_to_str(dt)
 
#define xroad_datetime_to_sql(v)
 

Functions

xroad_datetime_t xroad_datetime_create (uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec, uint32_t usec, xroad_tzone_t tz)
 
bool xroad_datetime_is_null (xroad_datetime_t dt)
 
xroad_timestamp_t xroad_datetime_to_ts (xroad_datetime_t dt)
 
xroad_datetime_t xroad_datetime_from_ts (xroad_timestamp_t ts, xroad_tzone_t tz)
 
xroad_datetime_t xroad_datetime_now (xroad_tzone_t tz)
 
int64_t xroad_datetime_cmp (xroad_datetime_t lhs, xroad_datetime_t rhs)
 
xroad_datetime_t xroad_datetime_from_str (xroad_str_t date)
 
void xroad_datetime_set_time (xroad_datetime_t *dt, xroad_time_t time)
 
void xroad_datetime_set_date (xroad_datetime_t *dt, xroad_date_t date)
 
xroad_date_t xroad_datetime_get_date (xroad_datetime_t dt)
 
xroad_time_t xroad_datetime_get_time (xroad_datetime_t dt)
 
xroad_datetime_t xroad_datetime_from_parts (xroad_date_t date, xroad_time_t time)
 

Detailed Description

Author
Dmitry Melnikov

Macro Definition Documentation

◆ xroad_datetime_to_sql

#define xroad_datetime_to_sql (   v)
Value:
({ \
char* buf = "NULL"; \
uint32_t len = 4; \
xroad_datetime_t dt = (v); \
{ \
xroad_str_t s = xroad_datetime_to_str(dt); \
buf = alloca(s.len + 2); \
buf[0] = '\''; \
memcpy(buf + 1, s.data, s.len); \
buf[s.len + 1] = '\''; \
len = s.len + 2; \
} \
xroad_str_len(buf, len); \
})
#define xroad_datetime_to_str(dt)
Definition: xroad_datetime.h:73
bool xroad_datetime_is_null(xroad_datetime_t dt)

convert xroad_datetime_t to SQL string representation (NULL, '2020-01-01...')

Parameters
[in]v- datetime to convert
Returns
SQL string

◆ xroad_datetime_to_str

#define xroad_datetime_to_str (   dt)
Value:
({ \
char* buff = (char*)alloca(64); \
int32_t s = xroad_format(buff, 64, "%04d-%02d-%02d %02d:%02d:%02d", \
dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec); \
if (dt.usec) \
{ \
s += xroad_format(buff + s, 64 - s, ".%D", dt.usec); \
} \
if (dt.tz) \
{ \
s += xroad_format(buff + s, 64 - s, " %P", xroad_tzone_get_name(dt.tz)); \
} \
xroad_str_len(buff, s); \
})
int32_t xroad_format(char *buf, uint32_t len, const char *fmt,...)
xroad_str_t xroad_tzone_get_name(xroad_tzone_t idx)

convert datetime to string

Parameters
[in]-datetime
Returns
string representation

Function Documentation

◆ xroad_datetime_cmp()

int64_t xroad_datetime_cmp ( xroad_datetime_t  lhs,
xroad_datetime_t  rhs 
)

compare two datetime values

Parameters
[in]lhs- left hand datetime
[in]rhs- right hand datetime
Returns
0 - lhs == rhs, >0 - lhs > rhs, <0 - lhs < rhs

◆ xroad_datetime_create()

xroad_datetime_t xroad_datetime_create ( uint16_t  year,
uint8_t  month,
uint8_t  day,
uint8_t  hour,
uint8_t  min,
uint8_t  sec,
uint32_t  usec,
xroad_tzone_t  tz 
)

create datetime

Returns
xroad_datetime_t

◆ xroad_datetime_from_parts()

xroad_datetime_t xroad_datetime_from_parts ( xroad_date_t  date,
xroad_time_t  time 
)

create datetime from date and time

Parameters
[in]date- date. if NULL, current date is used @apram[in] time - time
[out]dt- created datetime

◆ xroad_datetime_from_str()

xroad_datetime_t xroad_datetime_from_str ( xroad_str_t  date)

create datetime from string in format YYYY-MM-DD HH:MM:SS.UUUUUU [TZ]

Parameters
[in]time- time in string
Returns
xroad_datetime_t instance

◆ xroad_datetime_from_ts()

xroad_datetime_t xroad_datetime_from_ts ( xroad_timestamp_t  ts,
xroad_tzone_t  tz 
)

convert timestamp to datetime

Parameters
[in]ts- timestamp
[in]tz- timezone (e.g. Europe/Moscow, UTC, etc). if no specified local timezone is used
[out]dt- datetime

◆ xroad_datetime_get_date()

xroad_date_t xroad_datetime_get_date ( xroad_datetime_t  dt)

extract date from datetime

Parameters
[in]dt- datetime
Returns
date

◆ xroad_datetime_get_time()

xroad_time_t xroad_datetime_get_time ( xroad_datetime_t  dt)

extract time from datetime

Parameters
[in]dt- datetime
Returns
xroad_time_t

◆ xroad_datetime_is_null()

bool xroad_datetime_is_null ( xroad_datetime_t  dt)

check if datetime is null

Parameters
[in]dt- datetime to check
Returns
true if dt is null, else false

◆ xroad_datetime_now()

xroad_datetime_t xroad_datetime_now ( xroad_tzone_t  tz)

get now time

Parameters
[in]tz- timezone
Returns
datetime object

◆ xroad_datetime_set_date()

void xroad_datetime_set_date ( xroad_datetime_t dt,
xroad_date_t  date 
)

set datetime date

Parameters
[in]dt- datetime
[in]date- date to set

◆ xroad_datetime_set_time()

void xroad_datetime_set_time ( xroad_datetime_t dt,
xroad_time_t  time 
)

set datetime time

Parameters
[in]dt- datetime
[in]time- time to set

◆ xroad_datetime_to_ts()

xroad_timestamp_t xroad_datetime_to_ts ( xroad_datetime_t  dt)

convert datetime to timestamp (microseconds since EPOC)

Parameters
[in]dt- datetime
Returns
EPOC microseconds