XROAD
xroad_date.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include "xroad_common_fwd.h"
9 #include <common/xroad_time.h>
10 #include <time.h>
11 
12 #define xroad_date_null (xroad_date_t){0}
13 
14 #ifdef __cplusplus
15 extern "C"
16 {
17 #endif
18 
19 typedef struct
20 {
21  uint16_t year;
22  uint8_t month;
23  uint8_t day;
24 } xroad_date_t;
25 
30 xroad_date_t xroad_date_create(uint16_t year, uint8_t month, uint8_t day);
31 
38 
45 
52 int32_t xroad_date_to_int(xroad_date_t date, bool short_year);
53 
59 xroad_date_t xroad_date_from_ts(xroad_timestamp_t ts);
60 
66 xroad_timestamp_t xroad_date_to_ts(xroad_date_t date);
67 
74 
81 
89 
97 
103 #define xroad_date_to_str(dt) \
104 ({ \
105  char* buff = alloca(11); \
106  int32_t s = xroad_format(buff, 11, "%04d-%02d-%02d", dt.year, dt.month, dt.day); \
107  xroad_str_len(buff, s); \
108 })
109 
115 #define xroad_date_to_sql(v) \
116 ({ \
117  char* buf = "NULL"; \
118  uint32_t len = 4; \
119  xroad_date_t dt = (v); \
120  if (!xroad_date_is_null(dt)) \
121  { \
122  xroad_str_t s = xroad_date_to_str(dt); \
123  buf = alloca(s.len + 2); \
124  buf[0] = '\''; \
125  memcpy(buf + 1, s.data, s.len); \
126  buf[s.len + 1] = '\''; \
127  len = s.len + 2; \
128  } \
129  xroad_str_len(buf, len); \
130 })
131 
139 
147 
152 
153 #ifdef __cplusplus
154 }
155 #endif
Definition: xroad_date.h:20
Definition: xroad_string.h:29
xroad_date_t xroad_date_from_tm(struct tm *tm)
xroad_timestamp_t xroad_date_to_ts(xroad_date_t date)
xroad_date_t xroad_date_create(uint16_t year, uint8_t month, uint8_t day)
uint32_t xroad_date_day_of_year()
int32_t xroad_date_to_int(xroad_date_t date, bool short_year)
xroad_date_t xroad_date_adjust(xroad_date_t dt, int32_t day)
int32_t xroad_date_cmp(xroad_date_t dt1, xroad_date_t dt2)
xroad_date_t xroad_date_max(xroad_date_t dt1, xroad_date_t dt2)
xroad_date_t xroad_date_from_ts(xroad_timestamp_t ts)
xroad_date_t xroad_date_from_int(int32_t date)
xroad_date_t xroad_date_min(xroad_date_t dt1, xroad_date_t dt2)
bool xroad_date_is_null(xroad_date_t data)
xroad_date_t xroad_date_from_str(xroad_str_t date)