The discussion highlights usability issues with creating all-day events in the Discourse calendar modal. nathank reported that the interface lacks an obvious all-day option, forcing users to select a time. He noted that setting the end time to 00:00 creates confusion, as it behaves as an all-day event in the UI but displays as midnight in timezone views, which is counterintuitive for non-expert users. He suggested adding a dedicated checkbox to hide time fields for all-day events.
Lilly shared her workflow, noting that while she finds the process manageable by manually selecting 00:00, she agrees that the behavior is not clear. She pointed out inconsistencies between the event modal and the composer’s insert date functionality, specifically regarding week start days (Sunday vs. Monday) and how dates are displayed.
nathank acknowledged that the workflow works once understood but emphasized that the reliance on 00:00 to mean all-day is not intuitive for new users. He agreed with Lilly that the modal and composer date functions should behave identically.
lindsey announced that the primary concern has been addressed by adding an “All day event” checkbox to the Create Event modal, referencing Pull Request #38511. This update allows users to toggle all-day status without manually manipulating time fields, resolving the initial usability complaints.
When using Discourse Calendar and Events, I find it unnecessarily difficult to schedule all day events using the modal:
Basically, there is no obvious all-day option - a time must be selected. Making matters worse, when it is set to a day or more after the start time, the end time defaults to 00:00, which is quite annoying (it defaults to 1hr after the beginning time if the same day).
I do note that when 00:00 is selected, the following occurs:
in the UI, it is represented as an all day event (i.e. not as midnight) [event start="2026-01-21 00:00" status="public" timezone="Pacific/Auckland" end="2026-01-22 00:00"] [/event] gives:
if the time is deleted in the markdown, it behaves the same way
It would be great to have this all a bit clearer for the non-expert users, but I accept that there might be limitations baked into how the dates are stored.
As an alternative, would it be possible to add an “All day event” option to the modal, which when ticked hides the times?
Then we could use 00:00 to actually mean the literal time that it should (i.e. 1 minute before 00:01 on the specified day, not 1 minute after 23:59 on the specified day) - as it does with the Insert Date/Time functionality.
hmmm, speaking for myself only - I don’t really find the workflow that difficult for multiple day events, i just select the first date, the click the dropdown for time and hit the 0 key and 00:00 pops up and i select it. then i just select the second date in the calendar and it defaults to 00:00 and i move on to the next required fields
Yeah, that flow works quite nicely now that I know it - and understand what 00:00 means / does.
The problem is that this is overlaying a whole heap of meaning on 00:00 which is not obvious or clear to new users. Basically, it needs refinement - or at least ‘just in time’ information.
Yes, agree - these really need to work exactly the same.