Fix the implementations of gnc_foo_get_day_neutral.

As implemented these returned 10:59 AM local on the day but neutral
time is 10:59 UTC.
This commit is contained in:
John Ralls 2021-03-19 17:09:03 -07:00
parent c6c5777cf2
commit 3a35514d84
2 changed files with 15 additions and 18 deletions

View File

@ -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

View File

@ -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);