MagicMirrorOrg / MagicMirrorOrg/MagicMirror

[Bug] sliceMultiDayEvents: sliced sub-events after the first start at 23:59 instead of next-day 00:00

Open Beginner friendly
#4,206 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ready (coming with next release)
Dominant language
JavaScript
Stars
23.9k
Forks
4.6k
Avg merge
17h 31m
Merged PRs (30d)
25

Description

Platform

  • MagicMirror² v2.37.0
  • default calendar module, sliceMultiDayEvents: true

Bug

With sliceMultiDayEvents: true, a multi-day event is split into per-day slices (1/n), (2/n), … Every slice after the first is displayed as starting at 23:59 instead of the following day's 00:00.

Cause

modules/default/calendar/calendar.js, in the slicing loop (around L513–535):

let midnight = eventStartDateMoment.clone().startOf("day").add(1, "day").endOf("day");
...
event.startDate = midnight.format("x");   // start of the NEXT slice
...
midnight = midnight.clone().add(1, "day").endOf("day");

midnight is .endOf("day") (= 23:59:59.999), but it is assigned as the following slice's startDate. So each subsequent slice starts at 23:59:59.999 of the previous day instead of 00:00 of its own day, which is what gets rendered as "… 23:59".

Fix

Use the start of the day for the next slice's start:

- event.startDate = midnight.format("x");
+ event.startDate = midnight.clone().startOf("day").format("x");

Reproduce

Any all-day or timed event spanning ≥2 midnights with sliceMultiDayEvents: true; slices 2..n show "… 23:59".

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Open modules/default/calendar/calendar.js and inspect the slicing loop around lines 513–535. Reproduce a multi-day event with sliceMultiDayEvents enabled, then verify that every slice after the first renders with a start time of 00:00 on its own day rather than 23:59 on the previous day.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
1/5
Estimated time
Under an hour
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.