From 768200176c062fb589e526d91ceebdaeaf713e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 22 Apr 2019 01:57:59 +0200 Subject: Fix DTEND of timezoned events. --- module/vcalendar.scm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/vcalendar.scm b/module/vcalendar.scm index 3ada4058..dbab308c 100644 --- a/module/vcalendar.scm +++ b/module/vcalendar.scm @@ -33,14 +33,20 @@ (make-tz-set tz))) (for ev in (children cal 'VEVENT) - (define date (parse-datetime (attr ev 'DTSTART))) + (define date (parse-datetime (attr ev 'DTSTART))) + (define end-date (parse-datetime (attr ev 'DTEND))) - (mod! (attr ev "DTEND") string->time-utc) - (set! (attr ev "DTSTART") (date->time-utc date)) + (set! (attr ev "DTSTART") (date->time-utc date) + (attr ev "DTEND") (date->time-utc end-date)) (when (prop (attr* ev 'DTSTART) 'TZID) (set! (zone-offset date) (get-tz-offset ev) - (attr ev 'DTSTART) (date->time-utc date)))) + (attr ev 'DTSTART) (date->time-utc date) + + ;; The standard says that DTEND must have the same + ;; timezone as DTSTART. Here we trust that blindly. + (zone-offset end-date) (zone-offset date) + (attr ev 'DTEND) (date->time-utc end-date)))) ;; Return cal) -- cgit v1.2.3