Beispiel #1
0
char *
gnc_timespec_to_iso8601_buff (Timespec ts, char * buff)
{
    gchar *fmt1 = "%Y-%m-%d %H:%M", *fmt2 = "%s:%02d.%06d %s";
    GDateTime *gdt;
    gchar *time_base, *tz;

    g_return_val_if_fail (buff != NULL, NULL);
    gdt = gnc_g_date_time_new_from_timespec_local (ts);
    g_return_val_if_fail (gdt != NULL, NULL);
    time_base = g_date_time_format (gdt, fmt1);
#ifdef G_OS_WIN32
    tz = g_date_time_format (gdt, "%Z");
#else
    tz = g_date_time_format (gdt, "%z");
#endif
    snprintf (buff, MAX_DATE_LENGTH, fmt2, time_base,
	      g_date_time_get_second (gdt), g_date_time_get_microsecond (gdt),
	      tz);

    g_free (time_base);
    g_free (tz);
    g_date_time_unref (gdt);
    return buff + strlen (buff);

}
/* gnc_g_date_time_new_from_timespec_local normalizes the timespec,
 * but we want to serialize it un-normalized, so we make a partial
 * copy.
 */
gchar *
timespec_sec_to_string(const Timespec *ts)
{
     gchar *time_string;
     GDateTime *gdt;
     Timespec sts = { ts->tv_sec, 0};
     gdt = gnc_g_date_time_new_from_timespec_local (sts);
     g_return_val_if_fail (gdt != NULL, NULL);
     time_string = g_date_time_format (gdt, "%Y-%m-%d %H:%M:%S %z");
     g_date_time_unref (gdt);
     return time_string;
}