time64 gnc_mktime (struct tm* time) { GDateTime *gdt; time64 secs; normalize_struct_tm (time); gdt = gnc_g_date_time_new_local (time->tm_year + 1900, time->tm_mon, time->tm_mday, time->tm_hour, time->tm_min, (gdouble)(time->tm_sec)); if (gdt == NULL) { g_warning("Invalid time passed to gnc_mktime"); return -1; } time->tm_mon = time->tm_mon > 0 ? time->tm_mon - 1 : 11; // Watch out: struct tm has wday=0..6 with Sunday=0, but GDateTime has wday=1..7 with Sunday=7. time->tm_wday = g_date_time_get_day_of_week (gdt) % 7; time->tm_yday = g_date_time_get_day_of_year (gdt); time->tm_isdst = g_date_time_is_daylight_savings (gdt); #ifdef HAVE_STRUCT_TM_GMTOFF time->tm_gmtoff = g_date_time_get_utc_offset (gdt) / G_TIME_SPAN_SECOND; #endif secs = g_date_time_to_unix (gdt); g_date_time_unref (gdt); return secs; }
gchar* balde_datetime_rfc5322(GDateTime *dt) { // datetime must be utc return g_strdup_printf("%s, %02d %s %04d %02d:%02d:%02d GMT", days[g_date_time_get_day_of_week(dt) - 1], g_date_time_get_day_of_month(dt), months[g_date_time_get_month(dt) - 1], g_date_time_get_year(dt), g_date_time_get_hour(dt), g_date_time_get_minute(dt), g_date_time_get_second(dt)); }
static void gnc_g_date_time_fill_struct_tm (GDateTime *gdt, struct tm* time) { g_date_time_get_ymd (gdt, &(time->tm_year), &(time->tm_mon), &(time->tm_mday)); time->tm_sec = g_date_time_get_second (gdt); time->tm_min = g_date_time_get_minute (gdt); time->tm_hour = g_date_time_get_hour (gdt); // Watch out: struct tm has wday=0..6 with Sunday=0, but GDateTime has wday=1..7 with Sunday=7. time->tm_wday = g_date_time_get_day_of_week (gdt) % 7; time->tm_yday = g_date_time_get_day_of_year (gdt); time->tm_isdst = g_date_time_is_daylight_savings (gdt); time->tm_year -= 1900; --time->tm_mon; }
guint CalendarDatePrivate::dayOfWeek(guint year, guint mm, guint dd) { GDateTime * dt; guint days; dt = g_date_time_new_local(year, mm, dd, 1, 1, 1); if (NULL == dt) { return 0; } days = g_date_time_get_day_of_week(dt); g_date_time_unref(dt); return days; }
time64 gnc_timegm (struct tm* time) { GDateTime *gdt; time64 secs; normalize_struct_tm (time); gdt = g_date_time_new_utc (time->tm_year + 1900, time->tm_mon, time->tm_mday, time->tm_hour, time->tm_min, (gdouble)(time->tm_sec)); time->tm_mon = time->tm_mon > 0 ? time->tm_mon - 1 : 11; // Watch out: struct tm has wday=0..6 with Sunday=0, but GDateTime has wday=1..7 with Sunday=7. time->tm_wday = g_date_time_get_day_of_week (gdt) % 7; time->tm_yday = g_date_time_get_day_of_year (gdt); time->tm_isdst = g_date_time_is_daylight_savings (gdt); secs = g_date_time_to_unix (gdt); g_date_time_unref (gdt); return secs; }
void um_history_dialog_show (UmHistoryDialog *um, GtkWindow *parent) { GDateTime *temp, *local; /* Set the first day of this week */ local = g_date_time_new_now_local (); temp = g_date_time_new_local (g_date_time_get_year (local), g_date_time_get_month (local), g_date_time_get_day_of_month (local), 0, 0, 0); um->week = g_date_time_add_days (temp, 1 - g_date_time_get_day_of_week (temp)); um->current_week = g_date_time_ref (um->week); g_date_time_unref (local); g_date_time_unref (temp); show_week (um); gtk_window_set_transient_for (GTK_WINDOW (um->dialog), parent); gtk_window_present (GTK_WINDOW (um->dialog)); }
gint g_calendar_gregorian_real_get_day_of_week (GCalendar *calendar, /* IN */ GDateTime *datetime) /* IN */ { return g_date_time_get_day_of_week (datetime); }