static Timespec gnc_dmy2timespec_internal (int day, int month, int year, gboolean start_of_day) { Timespec result; struct tm date; long long secs = 0; long long era = 0; date.tm_year = year - 1900; date.tm_mon = month - 1; date.tm_mday = day; if (start_of_day) gnc_tm_set_day_start(&date); else gnc_tm_set_day_end(&date); /* compute number of seconds */ secs = gnc_mktime (&date); result.tv_sec = secs; result.tv_nsec = 0; return result; }
static void gnc_tm_get_day_end (struct tm *tm, time64 time_val) { /* Get the equivalent time structure */ if (!gnc_localtime_r(&time_val, tm)) return; gnc_tm_set_day_end(tm); }
/** * gnc_date_edit_get_date_end: * @gde: The GNCDateEdit widget * * Returns the date entered in the GNCDateEdit widget, * but with the time adjusted to the end of the day. */ time64 gnc_date_edit_get_date_end (GNCDateEdit *gde) { struct tm tm; g_return_val_if_fail (gde != NULL, 0); g_return_val_if_fail (GNC_IS_DATE_EDIT (gde), 0); tm = gnc_date_edit_get_date_internal (gde); gnc_tm_set_day_end(&tm); return gnc_mktime (&tm); }