| Summary: | Calendar today-highlight shows the previous day when local timezone is ahead of UTC and local time is before UTC midnight (regression of bug 394423) | ||
|---|---|---|---|
| Product: | [Plasma] plasmashell | Reporter: | Mahmud Farooque <farooque7> |
| Component: | Digital Clock widget | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | nate, qydwhotmail |
| Priority: | NOR | Keywords: | regression |
| Version First Reported In: | 6.6.4 | ||
| Target Milestone: | 1.0 | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/plasma-workspace/-/commit/1967ff8c8ccca57744ee2bb1b629f8d46fbf3869 | Version Fixed/Implemented In: | 6.6.6 |
| Sentry Crash Report: | |||
|
Description
Mahmud Farooque
2026-06-06 00:08:16 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6693 Git commit 15e4ca1137599e093b71a9c57bb3e742cac3e707 by Fushan Wen. Committed on 12/06/2026 at 00:22. Pushed by fusionfuture into branch 'master'. components/calendar: fix today-highlight showing wrong day for UTC+x timezones before UTC midnight Calendar::setToday() calls .date() on a QDateTime with Qt::UTC timeSpec, which returns the UTC date. This gives the wrong date when the system timezone is ahead of UTC and local time is before UTC midnight, because the local date has already advanced past the UTC date (e.g. UTC+6 at 04:00 local is still 22:00 UTC the previous day). The incoming QDateTime originates from Clock::jsDateTime() which retains Qt::UTC timeSpec. Replace dateTime.date() with dateTime.toLocalTime().date() so the stored date matches the system local timezone, consistent with what JS Date.getDate() returns for the same value. Apply the same fix to setDisplayedDate(const QDateTime &) so it also handles QDateTime values with Qt::UTC timeSpec correctly. M +13 -2 components/calendar/calendar.cpp https://invent.kde.org/plasma/plasma-workspace/-/commit/15e4ca1137599e093b71a9c57bb3e742cac3e707 Thanks for the quick fix! I can see the cherry-pick to Plasma/6.7 in MR 6740. Could this also be picked to Plasma/6.6? Distros on the 6.6 series (e.g. Kubuntu 26.04 LTS, where I hit this on 6.6.4) would otherwise carry the regression for the life of the release. The change is small and self-contained (+13/-2 in components/calendar/calendar.cpp with autotests), so it seems like a good candidate for a 6.6.x point release. We'll consider it! Git commit e1e46fa91c91cbc56ced2d339947e13e0cff5174 by Fushan Wen. Committed on 12/06/2026 at 11:06. Pushed by fusionfuture into branch 'Plasma/6.7'. components/calendar: fix today-highlight showing wrong day for UTC+x timezones before UTC midnight Calendar::setToday() calls .date() on a QDateTime with Qt::UTC timeSpec, which returns the UTC date. This gives the wrong date when the system timezone is ahead of UTC and local time is before UTC midnight, because the local date has already advanced past the UTC date (e.g. UTC+6 at 04:00 local is still 22:00 UTC the previous day). The incoming QDateTime originates from Clock::jsDateTime() which retains Qt::UTC timeSpec. Replace dateTime.date() with dateTime.toLocalTime().date() so the stored date matches the system local timezone, consistent with what JS Date.getDate() returns for the same value. Apply the same fix to setDisplayedDate(const QDateTime &) so it also handles QDateTime values with Qt::UTC timeSpec correctly. (cherry picked from commit 15e4ca1137599e093b71a9c57bb3e742cac3e707) Co-authored-by: Fushan Wen <qydwhotmail@gmail.com> M +13 -2 components/calendar/calendar.cpp https://invent.kde.org/plasma/plasma-workspace/-/commit/e1e46fa91c91cbc56ced2d339947e13e0cff5174 Git commit 1967ff8c8ccca57744ee2bb1b629f8d46fbf3869 by Fushan Wen. Committed on 12/06/2026 at 11:09. Pushed by fusionfuture into branch 'Plasma/6.6'. components/calendar: fix today-highlight showing wrong day for UTC+x timezones before UTC midnight Calendar::setToday() calls .date() on a QDateTime with Qt::UTC timeSpec, which returns the UTC date. This gives the wrong date when the system timezone is ahead of UTC and local time is before UTC midnight, because the local date has already advanced past the UTC date (e.g. UTC+6 at 04:00 local is still 22:00 UTC the previous day). The incoming QDateTime originates from Clock::jsDateTime() which retains Qt::UTC timeSpec. Replace dateTime.date() with dateTime.toLocalTime().date() so the stored date matches the system local timezone, consistent with what JS Date.getDate() returns for the same value. Apply the same fix to setDisplayedDate(const QDateTime &) so it also handles QDateTime values with Qt::UTC timeSpec correctly. (cherry picked from commit 15e4ca1137599e093b71a9c57bb3e742cac3e707) Co-authored-by: Fushan Wen <qydwhotmail@gmail.com> M +13 -2 components/calendar/calendar.cpp https://invent.kde.org/plasma/plasma-workspace/-/commit/1967ff8c8ccca57744ee2bb1b629f8d46fbf3869 |