Repository navigation
[Bug] Start date filter on the Competency Management page uses UTC days, while Studio shows course dates in the user's time zone #834
Description
Parent: #670 (front end). Related: #669 (back end).
Environment: Master Sandbox, https://apps.master.openedx.io/authoring/taxonomy/45/competencies
Summary
The course search on the Competency Management page filters courses by start date. The user picks a calendar day in their own time zone, but the back end compares it against a UTC day. When a course starts late in the evening UTC, or early in the morning UTC, the two days are different, and the filter does not return a course that Studio shows as starting on the selected day.
How the filter works now
- The date picker sends the selected local calendar day as a plain date, for example
start_date_on_or_after=2027-07-01&start_date_on_or_before=2027-07-01. - The back end ([BE] Add start-date range filter and outline delivery for accessible courses (Competency Criteria Associations) #669) treats that date as a UTC day: it returns courses whose start is at or after
2027-07-01T00:00:00Zand before2027-07-02T00:00:00Z. - Studio pages, for example the course outline, show the same start date converted to the user's local time zone.
So a user who is not in UTC sees one date on the course page and has to pick a different date in the filter to find that course.
Steps to reproduce (time zones east of UTC, for example Georgia, UTC+4)
- Open the course outline of
course-v1:Axim+DC2+2026_T1in Studio https://apps.master.openedx.io/authoring/course/course-v1:Axim+DC2+2026_T1. Its start is2027-06-30T22:00:00Z, so the page shows July 1, 2027. - Open https://apps.master.openedx.io/authoring/taxonomy/45/competencies and select any competency.
- Press "Start Date" and select the range July 1, 2027 to July 1, 2027.
- Look for "Axim DC2" in the results.
- Change the range to June 30, 2027 to June 30, 2027.
Expected: The course is found by the July 1 filter, because Studio shows July 1 as its start date.
Actual: The July 1 filter does not return the course. The June 30 filter returns it.
Reproducing from a time zone west of UTC (for example the US)
With the course above, a user in the US does not see the bug: 2027-06-30T22:00:00Z is still June 30 in every US time zone (for example 18:00 EDT or 15:00 PDT), so the local day and the UTC day match. The bug only shows when the local day and the UTC day of the course start differ. Either of these two options makes that happen:
Option A: override the browser time zone. This option reuses the course above and needs no new data.
- In Chrome, open DevTools, then the three-dot menu, then "More tools", then "Sensors".
- Under "Location", choose a preset east of UTC (for example "Berlin" or "Mumbai"), or choose "Other" and enter the timezone ID
Asia/Tbilisi. - Keep DevTools open and reload the page. The override applies only while DevTools is open.
- Follow the steps in the section above.
Option B: use a course that starts early in the morning UTC.
- In Studio, create a course (or edit a test course) and open "Schedule & details".
- Set the course start date to July 1, 2027 and the start time to 02:00. Studio enters the start time in UTC, so the stored start is
2027-07-01T02:00:00Z. In the US that is June 30 (22:00 EDT or 19:00 PDT), and the course outline shows June 30. - On the Competency Management page, filter by June 30, 2027 to June 30, 2027. The course is not found.
- Filter by July 1, 2027 to July 1, 2027. The course is found, although Studio shows June 30 as its start date.
Notes
- The bug sits between the front end ([FE] Competency Management Course Search/View #670) and the back end ([BE] Add start-date range filter and outline delivery for accessible courses (Competency Criteria Associations) #669). The front end sends a local calendar day without time zone information, and the back end has no way to know the user's time zone. The back end parameter accepts only
YYYY-MM-DD, so the front end cannot currently send exact local day boundaries as timestamps. - Possible fixes, for the developer to choose: let the back end accept ISO datetimes so the front end can send the local start and end of the selected days; add a time zone parameter to the request.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
dvarenikqaconsultant commentedon Oct 10, 2026
Environment: Master Sandbox (https://apps.master.openedx.io/)
Fix tested: openedx/frontend-app-authoring#3278, together with the back end change openedx/openedx-platform#39163 (both merged on 2026-10-09)
Test user:
dmitryvarenikqa(staff)Test type: UI, with the browser time zone set to
Asia/Tbilisi(UTC+4) andAmerica/New_York(UTC-4 in July)Result: ✅ The bug is fixed. The start date filter now returns a course on the day that Studio shows as its start date in the user's time zone. All 7 checks passed.
Course start dates shown in Studio
The course outline shows the start date in the browser's time zone. This is the day a user expects the filter to match.
course-v1:Axim+DC2+2026_T1course-v1:Axim+DC2+2026_T1course-v1:QA842+B+2027Filter results
On the Competency Management page, I selected a competency, searched for the course, and picked the date range with the "Start Date" filter.
Axim DC2QA842-BAxim DC2(a US user did not see the bug before the fix)Request sent by the page
In every check, the page sends the selected days as the start and end of the local day, with the browser's UTC offset, instead of a plain
YYYY-MM-DDdate. Examples:start_date_on_or_after=2027-07-01T00:00:00.000+04:00&start_date_on_or_before=2027-07-01T23:59:59.999+04:00start_date_on_or_after=2027-06-30T00:00:00.000+04:00&start_date_on_or_before=2027-07-01T23:59:59.999+04:00start_date_on_or_after=2027-06-30T00:00:00.000-04:00&start_date_on_or_before=2027-06-30T23:59:59.999-04:00