diff --git a/libgnucash/engine/gnc-date.cpp b/libgnucash/engine/gnc-date.cpp index 2f48aa91f3..3a969a46dc 100644 --- a/libgnucash/engine/gnc-date.cpp +++ b/libgnucash/engine/gnc-date.cpp @@ -1269,6 +1269,14 @@ gnc_tm_get_day_start (struct tm *tm, time64 time_val) gnc_tm_set_day_start(tm); } +void +gnc_tm_set_day_neutral (struct tm *tm) +{ + auto time_val{gnc_dmy2time64_internal(tm->tm_mday, tm->tm_mon + 1, + tm->tm_year + 1900, DayPart::neutral)}; + gnc_localtime_r(&time_val, tm); +} + static void gnc_tm_get_day_neutral (struct tm *tm, time64 time_val) { @@ -1302,11 +1310,9 @@ time64 gnc_time64_get_day_neutral (time64 time_val) { struct tm tm; - time64 new_time; - - gnc_tm_get_day_neutral(&tm, time_val); - new_time = gnc_mktime(&tm); - return new_time; + gnc_localtime_r(&time_val, &tm); + return gnc_dmy2time64_internal(tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900, + DayPart::neutral); } time64 diff --git a/libgnucash/engine/gnc-date.h b/libgnucash/engine/gnc-date.h index 7556fd1c66..8f445530ae 100644 --- a/libgnucash/engine/gnc-date.h +++ b/libgnucash/engine/gnc-date.h @@ -539,18 +539,9 @@ void gnc_tm_set_day_start (struct tm *tm) } /** The gnc_tm_set_day_neutral() inline routine will set the appropriate - * fields in the struct tm to indicate 10:59am of that day. This - * routine assumes that the contents of the data structure is already - * in normalized form.*/ -static inline -void gnc_tm_set_day_neutral (struct tm *tm) -{ - /* First second of the day */ - g_return_if_fail (tm != NULL); - tm->tm_hour = 10; - tm->tm_min = 59; - tm->tm_sec = 0; -} + * fields in the struct tm to indicate 10:59am of that day. + */ +void gnc_tm_set_day_neutral (struct tm *tm); /** The gnc_tm_set_day_middle() inline routine will set the appropriate * fields in the struct tm to indicate noon of that day. This @@ -584,7 +575,7 @@ void gnc_tm_set_day_end (struct tm *tm) * seconds and adjust it to the first second of that day. */ time64 gnc_time64_get_day_start(time64 time_val); -/** The gnc_time64_get_day_netural() routine will take the given time in +/** The gnc_time64_get_day_neutral() routine will take the given time in * seconds and adjust it to 10:59am of that day. */ time64 gnc_time64_get_day_neutral(time64 time_val);