fix: handle timezone properly for all-day events

This commit is contained in:
Kainoa Kanter
2025-10-08 19:55:44 -07:00
parent 799f4e0257
commit d6f8eb0bed
2 changed files with 6 additions and 5 deletions
+3 -2
View File
@@ -5,6 +5,7 @@ gi.require_version('EDataServer', '1.2')
gi.require_version('ECal', '2.0') gi.require_version('ECal', '2.0')
import json import json
import sys import sys
import time
from datetime import datetime, timezone from datetime import datetime, timezone
from gi.repository import ECal, EDataServer from gi.repository import ECal, EDataServer
@@ -30,8 +31,8 @@ def safe_get_time(ical_time):
return None return None
if ical_time.is_date(): if ical_time.is_date():
dt = datetime(year, month, day, 0, 0, 0, tzinfo=timezone.utc) local_struct = time.struct_time((year, month, day, 0, 0, 0, 0, 0, -1))
return int(dt.timestamp()) return int(time.mktime(local_struct))
hour = ical_time.get_hour() hour = ical_time.get_hour()
minute = ical_time.get_minute() minute = ical_time.get_minute()
+3 -3
View File
@@ -410,12 +410,12 @@ NPanel {
return false return false
const targetDate = new Date(year, month, day) 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 const targetEnd = targetStart + 86400 // +24 hours
return CalendarService.events.some(event => { return CalendarService.events.some(event => {
// Check if event starts or overlaps with this day // 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 const targetEnd = targetStart + 86400 // +24 hours
return CalendarService.events.filter(event => { 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)
}) })
} }