Read the statement by Michael Teeuw here.
MMM-CalendarExt3 BST Timezone issue
-
@sdetweil this is another entry added this week with the issue.
BEGIN:VEVENT DTSTART;VALUE=DATE:20240402 DTEND;VALUE=DATE:20240403 DTSTAMP:20240403T224236Z UID:70rjap1gXXXXX6oo68db56o@google.com CREATED:20240402T105500Z LAST-MODIFIED:20240402T105500Z SEQUENCE:0 STATUS:CONFIRMED SUMMARY:12 hours TRANSP:OPAQUE END:VEVENT
-
@shall_ ok. weird. anyhow
we dont process anything other than vevents. so the garbage at the top which has the x-wr timezone, we dont see.
so the calendar will be processed in the current system timezone.
if you want to see the debug of processing, add the ,“DEBUG” to the end of the logLevel property in config.js
and then start mm like this
npm start >somefile.txt 2>&1
wait til the cal is up, then ctrl-q quit mm and examine the somefile.txt
-
@shall_ because there is no timezone specified on the entry, it will be processed in the current system timezone
-
I will have to pick this up again tomorrow. i will run the debug when i get home from work.
is there anything I am looking for in particular? -
@shall_ because there is a rrule
the string
dates: …
documents the dates returned from the rrule.between function… yesterday plus 1 year
is the window we create to get recurring events -
@shall_
CX3 doesn’t parse ics file directly, so probably the default calendar app (or any event provider) must have responsibility.But for an instant solution, you can use
preProcessor
orevent payload
to make a hotfix by force.BEFORE
/* in your CX3 module config */ preProcessor: (event) => { if (["SomeCalendarName", "AnotherCalendarName"].includes(event.calendarName)) { event.startDate = Number(event.startDate) - 1000 * 60 * 60 event.endDate = Number(event.endDate) - 1000 * 60 * 60 } return event }
AFTER
If all your calendar has that issue, you can omit if statement.
preProcessor: (event) => { event.startDate = Number(event.startDate) - 1000 * 60 * 60 event.endDate = Number(event.endDate) - 1000 * 60 * 60 return event }
-
@MMRIZE Thanks for your reply.
The timed calendar events with a start/finish time show the correct time with no issue.The issue solely lies with all-day and multi-day events.
All of these events during DST showed correctly, as soon as the timezone changed to BST. They now all rollover into the following day, so my 5 day events are now 6 days, 2 days are now 3, single days 2. -
@shall_
Can you send me the ics file? (eouia0819@gmail.com) -
@MMRIZE i have emailed it over
-
Is MagicMirror installed directly to your Pi, or are you running it inside a Docker or other container? I originally had a similar problem with my MM configs all set properly, and my system time set properly, but for some reason I needed to also force the Docker container to the correct timezone with environment variables in the docker-compose file:
environment: - TZ=America/Los Angeles - SET_CONTAINER_TIMEZONE=true - CONTAINER_TIMEZONE=America/Los_Angeles
Obviously you’d want a different timezone, and you’re probably running MM on your Pi without using Docker, but maybe it’ll help.