(define-module (vcomponent datetime) #:use-module (vcomponent base) #:use-module (srfi srfi-19 alt) #:use-module (srfi srfi-19 alt util) #:use-module (util) #:export (#;parse-datetime event-overlaps? overlapping? event-contains? ev-timedate dtime (case (string-length dtime) ((8) "~Y~m~d") ; All day ((15) "~Y~m~dT~H~M~S") ; "local" or TZID-param ((16) "~Y~m~dT~H~M~S~z")))) ; UTC-time (define (event-overlaps? event begin end) "Returns if the event overlaps the timespan. Event must have the DTSTART and DTEND attribute set." (timespan-overlaps? (attr event 'DTSTART) (attr event 'DTEND) begin end)) (define (overlapping? event-a event-b) (timespan-overlaps? (attr event-a 'DTSTART) (attr event-a 'DTEND) (attr event-b 'DTSTART) (attr event-b 'DTEND))) (define (event-contains? ev date/-time) "Does event overlap the date that contains time." (let* ((start (as-date date/-time)) (end (add-day start))) (event-overlaps? ev start end))) (define-public (ev-time