gcal-date-time-utils: Fix week start
In locales where the first weekday is a monday, the previous code had a off by one error determining the week a sunday is in. The problem ultimately arose because in the `gcal_date_time_get_start_of_week()` function the variable `n_days_after_week_start` would become negative (-1 in this case) making the following `g_date_time_add_days (date, -n_days_after_week_start)` add 1 day resulting in `start_of_week` being set to the start of the following week. The solution was to make sure `n_days_after_week_start` would be positive by adding 7 to it. The variable is taken modulo 7 hence this should not introduce any bugs. Fixes #583
This commit is contained in:
@@ -84,7 +84,7 @@ gcal_date_time_get_start_of_week (GDateTime *date)
|
||||
|
||||
first_weekday = get_first_weekday ();
|
||||
weekday = g_date_time_get_day_of_week (date) % 7;
|
||||
n_days_after_week_start = (weekday - first_weekday) % 7;
|
||||
n_days_after_week_start = (7 + weekday - first_weekday) % 7;
|
||||
|
||||
start_of_week = g_date_time_add_days (date, -n_days_after_week_start);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user