MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Calendar events showing on wrong day.

    Scheduled Pinned Locked Moved Unsolved Troubleshooting
    66 Posts 3 Posters 28.5k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F Offline
      flyedge
      last edited by

      I have noticed that some events (particularly those later in the day, or all day events) have been showing up a day late. I have tried adjusting the config options to absolute on the calendar module, as well as updating to the most recent develop version, however neither of these have fixed the issue. Has anyone else had run into this issue, or know how to fix it?

      S 1 Reply Last reply Reply Quote 0
      • S Offline
        sdetweil @flyedge
        last edited by

        @flyedge what time zone are you in and the calendar entry?

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        F 1 Reply Last reply Reply Quote 0
        • F Offline
          flyedge @sdetweil
          last edited by

          @sdetweil both the Calendar, and my Magic mirror are on the Mountain/Edmonton time zone.

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @flyedge
            last edited by

            @flyedge can u post one event from the ICS file… use the URL in the cal setting in a browser, it downloads the ics, which is just text

            I want to see one

            BEGIN:VEVENT
            ...
            END:VEVENT
            

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            F 1 Reply Last reply Reply Quote 0
            • F Offline
              flyedge @sdetweil
              last edited by

              @sdetweil This event shows on the 22nd at 6pm rather than the 23rd. I do notice that for some reason the event shows as Vancouver time zone rather than Edmonton, perhaps that could be affecting something (even though it should only be 1 hour different…)

              BEGIN:VEVENT
              DTSTART;TZID=America/Vancouver:20201126T170000
              DTEND;TZID=America/Vancouver:20201126T180000
              RRULE:FREQ=MONTHLY;WKST=SU;BYMONTHDAY=23
              DTSTAMP:20211118T181948Z
              UID:55A45619-xxxxx-4425-xxxx-1EFBAFDC2DE0
              CREATED:20201119T060211Z
              DESCRIPTION:
              LAST-MODIFIED:20201119T060211Z
              LOCATION:
              SEQUENCE:0
              STATUS:CONFIRMED
              SUMMARY:Test
              TRANSP:OPAQUE
              END:VEVENT

              S 1 Reply Last reply Reply Quote 0
              • S Offline
                sdetweil @flyedge
                last edited by sdetweil

                @flyedge thanks… it seems a fix I put in early last year has been lost… trying to find out where…

                the library (not ours) that does repeating events, expects the date/time to be local time, no timezone

                we and the ics parse libraries expect the date/time to be utc time…

                so, your cal entry

                DTSTART;TZID=America/Vancouver:20201126T170000
                DTEND;TZID=America/Vancouver:20201126T180000
                RRULE:FREQ=MONTHLY;WKST=SU;BYMONTHDAY=23
                

                is processed

                Search for recurring events between: Thu Nov 18 2021 14:25:16 GMT-0600 (Central Standard Time) and Thu Nov 17 2022 23:59:59 GMT-0600 (Central Standard Time)

                Vancouver is -8, so 17+8-24 = 1 so utc time is next day +1

                [18.11.2021 14:25.16.441] [DEBUG] Title: Test, with dates:
                rrule returned dates

                [
                "2021-11-23T01:00:00.000Z",     next day +1.. except...  the start day was 23, so this should be 24:1 (-8) = 23/17:00
                
                so the luxon library didn't know about tz, and used the HOUR 1, as the repeating start time, on the 23rd.. 
                
                "2021-12-23T01:00:00.000Z",
                "2022-01-23T01:00:00.000Z",
                "2022-02-23T01:00:00.000Z","2022-03-23T01:00:00.000Z","2022-04-23T01:00:00.000Z","2022-05-23T01:00:00.000Z","2022-06-23T01:00:00.000Z","2022-07-23T01:00:00.000Z","2022-08-23T01:00:00.000Z","2022-09-23T01:00:00.000Z","2022-10-23T01:00:00.000Z"]
                

                if u change your system tz to Vancouver it should come out correct…

                to temp fix, try this

                edit modules/default/calendar/calendarutils.js

                there are two occurrences (approx line 348 and line 376) of this code

                								// if the timezones are the same, correct date if needed
                								if (event.start.tz === moment.tz.guess()) {
                									// if the date hour is less than the offset
                									if (24 - dh <= Math.abs(dateoffset / 60)) {
                										// apply the correction to the date/time back to right day
                										date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
                										// the duration was calculated way back at the top before we could correct the start time..
                										// fix it for this event entry
                										//duration = 24 * 60 * 60 * 1000;
                										Log.debug("new recurring date2 is " + date);
                									}
                								}
                

                we need to comment out the test for same timezone, it has a block if code inside the {} so we need to comment out the
                } at the end as well
                change like this

                								// if the timezones are the same, correct date if needed
                								//if (event.start.tz === moment.tz.guess()) {  <---- this line
                									// if the date hour is less than the offset
                									if (24 - dh <= Math.abs(dateoffset / 60)) {
                										// apply the correction to the date/time back to right day
                										date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
                										// the duration was calculated way back at the top before we could correct the start time..
                										// fix it for this event entry
                										//duration = 24 * 60 * 60 * 1000;
                										Log.debug("new recurring date2 is " + date);
                									}
                								//}   <- --- this line
                

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                F 1 Reply Last reply Reply Quote 0
                • F Offline
                  flyedge @sdetweil
                  last edited by

                  @sdetweil okay, I went through and changed my original calendar to make sure all events were in the correct time zone, but I was able to make a test event that was the same as the example. If I am understanding correctly, you want me to add // immediately in front of the “if (event.start…” as well as the second set of brackets at the end, two lines down from the “Log.debug…” line, around about lines 348 and 376?

                  I did try this, both with the system time zone in Edmonton, and Vancouver. Both resulted in the event still displaying on the 22nd.
                  I may have misunderstood what you were asking though as I am very new to this, and have no previous experience with javascript, aside from what I have been able to learn in the last few weeks setting this up.

                  One other aside, I have also noticed that all day events are being displayed correctly ahead of time, as well as day of- however the day after the event is scheduled it will remain, and display as an event scheduled that day. (example event will show in 2 days, 2 days ahead of time, ends in x hours on day of, but also shows ends in x hours 1 day after event was scheduled). Is this related to the same type of timezone issues as the original?

                  S 1 Reply Last reply Reply Quote 0
                  • S Offline
                    sdetweil @flyedge
                    last edited by sdetweil

                    @flyedge there are two instances of the if( and } that need to be commented out (//) right?

                    total of 4 lines (2 sets of 2)

                    1st one is for all day events
                    2nd one is for NOT full day events (which is what your event is , as it has time as well)

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    Coolie1101C 1 Reply Last reply Reply Quote 0
                    • Coolie1101C Offline
                      Coolie1101 @sdetweil
                      last edited by sdetweil

                      Hey @sdetweil, I am experiencing the same issue and made the changes as you motioned, but now I am getting an error for the calendar module, and the module is not loaded, if I revert the module loads and work as expected, any ideas?

                      Config Change

                      } else { 
                      								// if the timezones are the same, correct date if needed
                      //								if (event.start.tz === moment.tz.guess()) {
                      									// if the date hour is less than the offset
                      									if (24 - dh < Math.abs(dateoffset / 60)) {
                      										// apply the correction to the date/time back to right day
                      										date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
                      										// the duration was calculated way back at the top before we could correct the start time..
                      										// fix it for this event entry
                      										//duration = 24 * 60 * 60 * 1000;
                      										Log.debug("new recurring date2 is " + date);
                      									}
                      //								}
                      							}
                      						} else {
                      							// not full day, but luxon can still screw up the date on the rule processing
                      							// we need to correct the date to get back to the right event for
                      							if (dateoffset < 0) {
                      								// if the date hour is less than the offset
                      								if (dh < Math.abs(dateoffset / 60)) {
                      									// Reduce the time by the offset:
                      									// Apply the correction to the date/time to get it UTC relative
                      									date = new Date(date.getTime() - Math.abs(nowOffset) * 60000);
                      									// the duration was calculated way back at the top before we could correct the start time..
                      									// fix it for this event entry
                      									//duration = 24 * 60 * 60 * 1000;
                      									Log.debug("new recurring date1 is " + date);
                      								}
                      							} else {
                      								// if the timezones are the same, correct date if needed
                      //								if (event.start.tz === moment.tz.guess()) {
                      									// if the date hour is less than the offset
                      									if (24 - dh < Math.abs(dateoffset / 60)) {
                      										// apply the correction to the date/time back to right day
                      										date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
                      										// the duration was calculated way back at the top before we could correct the start time..
                      										// fix it for this event entry
                      										//duration = 24 * 60 * 60 * 1000;
                      										Log.debug("new recurring date2 is " + date);
                      									}
                      //								}
                      							}
                      						}
                      						startDate = moment(date);
                      
                      S 1 Reply Last reply Reply Quote 0
                      • S Offline
                        sdetweil @Coolie1101
                        last edited by

                        @coolie1101 said in Calendar events showing on wrong day.:

                        Config Change

                        you don’t change config, you are changing the module source code, right?

                        4 lines in 1 file

                        Sam

                        How to add modules

                        learning how to use browser developers window for css changes

                        Coolie1101C 1 Reply Last reply Reply Quote 0
                        • Coolie1101C Offline
                          Coolie1101 @sdetweil
                          last edited by Coolie1101

                          @sdetweil Yes, \modules\default\calendar\calendarutils.js

                          I forgot to post the event in my previous post, see below.

                          BEGIN:VEVENT
                          DTSTART:20191113T100000Z
                          DTEND:20191113T150000Z
                          DTSTAMP:20211119T124216Z
                          UID:6h0hrr7t2gr6qopi**********@google.com
                          RECURRENCE-ID:20191112T100000Z
                          CREATED:20211026T075843Z
                          DESCRIPTION:
                          LAST-MODIFIED:20211026T080254Z
                          LOCATION:
                          SEQUENCE:1
                          STATUS:CONFIRMED
                          SUMMARY:YARD WASTE
                          TRANSP:OPAQUE
                          END:VEVENT
                          
                          S 2 Replies Last reply Reply Quote 0
                          • S Offline
                            sdetweil @Coolie1101
                            last edited by sdetweil

                            @coolie1101 can us show me the messages where u start MM? (after doing the edit)

                            should include stuff like this

                            [18.11.2021 15:15.55.588] [LOG]   Connecting socket for: updatenotification
                            [18.11.2021 15:15.55.588] [LOG]   Connecting socket for: calendar
                            [18.11.2021 15:15.55.588] [LOG]   Starting node helper for: calendar
                            [18.11.2021 15:15.55.588] [LOG]   Connecting socket for: newsfeed
                            [18.11.2021 15:15.55.588] [LOG]   Starting node helper for: newsfeed
                            [18.11.2021 15:15.55.588] [LOG]   Connecting socket for: MMM-Config
                            [18.11.2021 15:15.55.588] [LOG]   Starting module helper: MMM-Config
                            [18.11.2021 15:15.55.588] [LOG]   Sockets connected & modules started ...
                            [18.11.2021 15:15.55.665] [LOG]   Launching application.
                            [18.11.2021 15:15.59.955] [LOG]   Create new calendarfetcher for url: http://localhost:8090/modules/default/calendar/canada.ics - Interval: 300000
                            [18.11.2021 15:15.59.964] [LOG]   Create new newsfetcher for url: https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml - Interval: 300000
                            

                            (if using pm2, stop instance first, pm2 stop all)
                            npm start >somefile.txt

                            then ctrl-c after MM shows cal info (if any, or error)

                            then examine somefile.txt

                            Sam

                            How to add modules

                            learning how to use browser developers window for css changes

                            Coolie1101C 1 Reply Last reply Reply Quote 0
                            • S Offline
                              sdetweil @Coolie1101
                              last edited by sdetweil

                              @coolie1101 do you have the current version of the vevent? as that one expired in 2019, and has no repeating rule

                              but when I adjusted to this year and nov 21

                              BEGIN:VEVENT
                              DTSTART:20211121T100000Z
                              DTEND:20211121T150000Z
                              DTSTAMP:20211119T124216Z
                              UID:6h0hrr7t2gr6qopifribble@google.com
                              RECURRENCE-ID:20191112T100000Z
                              CREATED:20211026T075843Z
                              DESCRIPTION:
                              LAST-MODIFIED:20211026T080254Z
                              LOCATION:
                              SEQUENCE:1
                              STATUS:CONFIRMED
                              SUMMARY:YARD WASTE
                              TRANSP:OPAQUE
                              END:VEVENT
                              

                              i see the right display

                              [19.11.2021 07:40.05.433] [DEBUG] startDate (local): Sun Nov 21 2021 04:00:00 GMT-0600 (Central Standard Time)
                              [19.11.2021 07:40.05.433] [DEBUG] endDate (local): Sun Nov 21 2021 09:00:00 GMT-0600 (Central Standard Time)
                              

                              as there is no timezone associated with that time. and I am CST

                              Sam

                              How to add modules

                              learning how to use browser developers window for css changes

                              Coolie1101C 1 Reply Last reply Reply Quote 0
                              • Coolie1101C Offline
                                Coolie1101 @sdetweil
                                last edited by Coolie1101

                                @sdetweil Yes, see below.

                                BEGIN:VEVENT
                                DTSTART;TZID=America/New_York:20210406T050000
                                DTEND;TZID=America/New_York:20210406T100000
                                RRULE:FREQ=WEEKLY;WKST=SU;UNTIL=20211230T045959Z;BYDAY=TU
                                DTSTAMP:20211119T124216Z
                                UID:0v89h5cit8nq6m************@google.com
                                CREATED:20211026T075843Z
                                DESCRIPTION:
                                LAST-MODIFIED:20211026T080254Z
                                LOCATION:
                                SEQUENCE:1
                                STATUS:CONFIRMED
                                SUMMARY:YARD WASTE
                                TRANSP:OPAQUE
                                END:VEVENT
                                

                                I can share that calendar with you if it makes it easier for you to test.

                                S 2 Replies Last reply Reply Quote 0
                                • S Offline
                                  sdetweil @Coolie1101
                                  last edited by

                                  @coolie1101 said in Calendar events showing on wrong day.:

                                  I can share that calendar with you if it makes it easier for you to test.

                                  no, i just create an ics file… easy cut/paste

                                  Sam

                                  How to add modules

                                  learning how to use browser developers window for css changes

                                  1 Reply Last reply Reply Quote 0
                                  • Coolie1101C Offline
                                    Coolie1101 @sdetweil
                                    last edited by

                                    @sdetweil said in Calendar events showing on wrong day.:

                                    npm start >somefile.txt

                                    What is this suppose to do?, seems something is missing from the command.

                                    S 1 Reply Last reply Reply Quote 0
                                    • S Offline
                                      sdetweil @Coolie1101
                                      last edited by

                                      @coolie1101 it directs the output of the command (npm start) to a file (somefile.txt)

                                      this is normal file output redirection, same as on windows

                                      the normal MM startup output looks like this

                                      
                                      > magicmirror@2.17.1 start /home/sam/MagicMirror
                                      > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js
                                      
                                      [19.11.2021 07:50.19.980] [LOG]   Starting MagicMirror: v2.17.1
                                      [19.11.2021 07:50.19.981] [LOG]   Loading config ...
                                      [19.11.2021 07:50.19.982] [LOG]   Loading module helpers ...
                                      [19.11.2021 07:50.19.982] [LOG]   trying to load module=alert
                                      [19.11.2021 07:50.19.982] [LOG]   No helper found for module: alert.
                                      [19.11.2021 07:50.19.982] [LOG]   trying to load module=MMM-Tools
                                      [19.11.2021 07:50.19.999] [LOG]   Initializing new module helper ...
                                      [19.11.2021 07:50.19.999] [LOG]   Module helper loaded: MMM-Tools
                                      [19.11.2021 07:50.19.999] [LOG]   trying to load module=updatenotification
                                      [19.11.2021 07:50.20.000] [LOG]   Initializing new module helper ...
                                      [19.11.2021 07:50.20.000] [LOG]   Module helper loaded: updatenotification
                                      [19.11.2021 07:50.20.000] [LOG]   trying to load module=clock
                                      

                                      etc

                                      Sam

                                      How to add modules

                                      learning how to use browser developers window for css changes

                                      1 Reply Last reply Reply Quote 0
                                      • S Offline
                                        sdetweil @Coolie1101
                                        last edited by sdetweil

                                        @coolie1101 after copying your new cal entry to ics, and running… it looks good to me…
                                        (with the edited calendarutils.js) (I am central US time)

                                        this ics with the other persons info in too

                                        Screenshot at 2021-11-19 07-59-58.png

                                        Sam

                                        How to add modules

                                        learning how to use browser developers window for css changes

                                        Coolie1101C 2 Replies Last reply Reply Quote 0
                                        • Coolie1101C Offline
                                          Coolie1101 @sdetweil
                                          last edited by Coolie1101

                                          @sdetweil Maybe I’m executing it in the wrong order, do i need to “pm2 start mm” and then do “npm start >somefile.txt”? eitherway, there isn’t error log entries for calendar.

                                          0|mm  | [19.11.2021 08:55.52.292] [LOG]
                                          0|mm  | Create new calendarfetcher for url: http://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics - Interval: 900000
                                          0|mm  | [19.11.2021 08:55.52.362] [LOG]
                                          0|mm  | Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/p07n98go11onam************%40group.calendar.google.com/public/basic.ics - Interval: 900000
                                          0|mm  | [19.11.2021 08:55.52.434] [LOG]
                                          0|mm  | Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/olrn3c2sf2k023************%40group.calendar.google.com/private-7d055c9f2a8b6bbfe674************/basic.ics - Interval: 900000
                                          0|mm  | [19.11.2021 08:55.52.448] [LOG]
                                          0|mm  | Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/mvdgcjroualavv************%40group.calendar.google.com/public/basic.ics - Interval: 900000
                                          

                                          Calendar Display
                                          f7cd3c06-7999-4e0a-a697-53cdfe2a225a-image.png

                                          S 1 Reply Last reply Reply Quote 0
                                          • S Offline
                                            sdetweil @Coolie1101
                                            last edited by

                                            @coolie1101 you cant run with pm2 AND with npm start

                                            so, thats why I said

                                            pm2 stop all
                                            

                                            THEN (in the MagicMirror folder)

                                            npm start
                                            

                                            Sam

                                            How to add modules

                                            learning how to use browser developers window for css changes

                                            Coolie1101C 1 Reply Last reply Reply Quote 0

                                            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
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • First post
                                              Last post
                                            Enjoying MagicMirror? Please consider a donation!
                                            MagicMirror created by Michael Teeuw.
                                            Forum managed by Sam, technical setup by Karsten.
                                            This forum is using NodeBB as its core | Contributors
                                            Contact | Privacy Policy