diff options
Diffstat (limited to 'module/vcalendar/datetime.scm')
-rw-r--r-- | module/vcalendar/datetime.scm | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/module/vcalendar/datetime.scm b/module/vcalendar/datetime.scm index f6df03d5..9b1cc82d 100644 --- a/module/vcalendar/datetime.scm +++ b/module/vcalendar/datetime.scm @@ -2,22 +2,24 @@ #:use-module (vcalendar) #:use-module (srfi srfi-19) #:use-module (srfi srfi-19 util) + #:use-module (util) #:export (parse-datetime event-overlaps? - event-in?) + event-in? + ev-time<?) ) +;;; date time pointer (define (parse-datetime dtime) "Parse the given date[time] string into a date object." - ;; localize-date - (date->time-utc - (string->date - dtime - (case (string-length dtime) - ((8) "~Y~m~d") - ((15) "~Y~m~dT~H~M~S") - ((16) "~Y~m~dT~H~M~S~z"))))) + (let* ((str type (case (string-length dtime) + ((8) (values "~Y~m~d" 'all-day)) ; All day + ((15) (values "~Y~m~dT~H~M~S" 'local)) ; "local" or TZID-param + ((16) (values "~Y~m~dT~H~M~S~z" 'utc)) ; UTC-time + )) + (date (string->date dtime str))) + (values date type))) (define (event-overlaps? event begin end) "Returns if the event overlaps the timespan. @@ -33,6 +35,6 @@ Event must have the DTSTART and DTEND attribute set." (end (add-day start))) (event-overlaps? ev start end))) -(define-public (ev-time<? a b) +(define (ev-time<? a b) (time<? (attr a 'DTSTART) (attr b 'DTSTART))) |