Read the statement by Michael Teeuw here.
MMM-CalendarExt3 BST Timezone issue
-
I currently have an issue with MMM-CalendarEXT3 where since we have switched to british summer time (BST) Timezone, now all my all and multi day calendar events roll into the following day, i had the same issue last year, my only resolution was to switch back to DST timezone.
I have trawled through the internet looking for a solution but i can’t find one. I have check my calendar timezone matches the Pi timezone. Plus tried various updates.
a lot of the “solutions” I have seen required hiding the end date, which isn’t really a fix and wouldn’t work for my situation.
Has anyone had this issue and found a good solution to this?
-
I have managed to fix my issue, it seems the event transformer I was using (to colour mt events) may have been contradicting the fix.
I removed the following from my event transformer which fixed the issue!
e.startDate = new Date(e.start?.date || e.start?.dateTime).valueOf() e.endDate = new Date(e.end?.date || e.end?.dateTime).valueOf() -
@shall_ i have not heard of this problem before.
can you provide the tinezone and a calendar entry from the ics file
to get the ics file take yiur calendar_url and do
curl -sL calendar_url >xxx.icsthen edit xxx.ics (its just text)
and find a BEGIN:VEVENT… END:VEVENT
That has the matching date/time info
xxx out any private data, but dont change anything else
post back here
-
@sdetweil said in MMM-CalendarExt3 BST Timezone issue:
curl -sL calendar_url >xxx.ics
Thanks for the reply. I am having trouble getting the ics file.
i have ran the command in the terminal, all it does is return to the empty command line. is this supposed to open something?@sdetweil said in MMM-CalendarExt3 BST Timezone issue:
then efit xxx.ics (its just text)
I am not sure what you mean by this? Apologies i am still fairly green on this side of things.
-
@shall_ sorry efit was edit, new phone and thumb havent become friends yet
by default most linux commands produce NO output when successful. they were designed back
in the teletype terminal world, where every character took a long time.so, this means the ics file was downloaded as requested
-
@sdetweil
Ok that makes sense. I have found the generated ics file, however it has a 0 file size and when I open it with text editor it is just an empty file. The file type is listed as “Outlook.File.ics.15”I am using google calendar urls, not sure if that makes any difference? i have tried 3 different urls that I use with the module.
-
@shall_ weird. are using the same url in mm config?
you might also try it in a browser on your pc. it should download the ics (downloads folder)
-
@sdetweil yes i copied each url straight from my config file.
I tried opening them in the browser, it downloaded as described but is still an empty file.I found a work around by just downloading the ics right from google calendar, this is an example of one of the events. with the timezone tied in.
RPi timezone is set to GMT +1 Europe/London (BST)
BEGIN:VCALENDAR PRODID:-//Google Inc//Google Calendar 70.9054//EN VERSION:2.0 CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:Work X-WR-TIMEZONE:Europe/London BEGIN:VEVENT DTSTART;VALUE=DATE:20170626 DTEND;VALUE=DATE:20170701 RRULE:FREQ=WEEKLY;WKST=MO;UNTIL=20190331T235959Z;INTERVAL=2;BYDAY=MO DTSTAMP:20240403T224236Z UID:15dcXXXXXXujb@google.com CREATED:20171216T163405Z LAST-MODIFIED:20190330T214112Z SEQUENCE:0 STATUS:CONFIRMED SUMMARY:Earlies TRANSP:TRANSPARENT END:VEVENT -
@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>&1wait 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
preProcessororevent payloadto 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_AngelesObviously you’d want a different timezone, and you’re probably running MM on your Pi without using Docker, but maybe it’ll help.
-
@shall_ @alaric10000
It happens when the event is regarded as FulldayEvent but not to start at 0 O’clock. I updated the module to fix it.
https://github.com/MMRIZE/MMM-CalendarExt3/pull/141
Update the module and check it. -
Finally I found what was wrong.
The issue lies in the wrong parsing logic from the default calendar module about repeated full-day events with TimeZone by RRULE.
If you have installed CX3 v1.8.2, Reinstall again or back to 1.8.1 (I rolled back again to 1.8.1)
Then see this;
https://github.com/MMRIZE/MMM-CalendarExt3/wiki/To-fix-wrong-repeated-fullday-event-displaying-(MM-2.27) -
@MMRIZE but… for full day, you ignore the time… or reset it to 00:00:00
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login