10#define DC_NS_PER_SEC 1000000000ULL
28 clock_gettime(CLOCK_REALTIME, &ts);
42 gmtime_r(&secs, &dt.
tm);
54 struct tm tm_copy = dt->
tm;
59 secs = timegm(&tm_copy);
68 strftime(buf,
sizeof(buf),
"%Y-%m-%dT%H:%M:%S", &dt->
tm);
70 char const* tz_suffix;
77 fprintf(
stream,
"%s.%09u%s", buf, dt->
nanos, tz_suffix);
81 fprintf(
stream,
"dc_datetime {\n");
static DC_PUBLIC void dc_debug_fmt_print(dc_debug_fmt fmt, FILE *stream, const char *format,...)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_end(dc_debug_fmt fmt)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_begin(dc_debug_fmt fmt)
#define DC_MOCKABLE(ret, name, args)
Defines a function as mockable, combining declaration & definition.
Debug format helpers for debug printin data structures.
static DC_PUBLIC void dc_datetime_debug(dc_datetime const *self, dc_debug_fmt fmt, FILE *stream)
static DC_PUBLIC dc_datetime dc_datetime_from_timestamp(dc_timestamp ts, dc_timezone tz)
static DC_PUBLIC dc_timestamp dc_datetime_to_timestamp(dc_datetime const *dt)
static DC_PUBLIC dc_datetime dc_datetime_now_utc(void)
static DC_PUBLIC void dc_datetime_format(dc_datetime const *dt, FILE *stream)
static DC_PUBLIC FILE * stream(SELF *self)