diff --git a/Bin/calendar-events.py b/Bin/calendar-events.py index 643a6184..febfe2ed 100755 --- a/Bin/calendar-events.py +++ b/Bin/calendar-events.py @@ -5,6 +5,7 @@ gi.require_version('EDataServer', '1.2') gi.require_version('ECal', '2.0') import json import sys +import time from datetime import datetime, timezone from gi.repository import ECal, EDataServer @@ -30,8 +31,8 @@ def safe_get_time(ical_time): return None if ical_time.is_date(): - dt = datetime(year, month, day, 0, 0, 0, tzinfo=timezone.utc) - return int(dt.timestamp()) + local_struct = time.struct_time((year, month, day, 0, 0, 0, 0, 0, -1)) + return int(time.mktime(local_struct)) hour = ical_time.get_hour() minute = ical_time.get_minute() diff --git a/Modules/Bar/Calendar/CalendarPanel.qml b/Modules/Bar/Calendar/CalendarPanel.qml index 1dbc473a..d9269a3a 100644 --- a/Modules/Bar/Calendar/CalendarPanel.qml +++ b/Modules/Bar/Calendar/CalendarPanel.qml @@ -410,12 +410,12 @@ NPanel { return false const targetDate = new Date(year, month, day) - const targetStart = Math.floor(new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()).getTime() / 1000) + const targetStart = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()).getTime() / 1000 const targetEnd = targetStart + 86400 // +24 hours return CalendarService.events.some(event => { // Check if event starts or overlaps with this day - return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end < targetEnd) || (event.start <= targetStart && event.end >= targetEnd) + return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end <= targetEnd) || (event.start < targetStart && event.end > targetEnd) }) } @@ -429,7 +429,7 @@ NPanel { const targetEnd = targetStart + 86400 // +24 hours return CalendarService.events.filter(event => { - return (event.start >= targetStart && event.start < targetEnd) || +(event.end > targetStart && event.end < targetEnd) || +(event.start <= targetStart && event.end >= targetEnd) + return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end <= targetEnd) || (event.start < targetStart && event.end > targetEnd) }) }