blob: d28096c6e890e6280e79201c15a5998f3b3c939b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
(define-module (vcalendar datetime)
#:use-module (vcalendar)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-19 util)
#:export (parse-datetime
event-overlaps?
event-in?)
)
(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")))))
(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 (event-in? ev time)
"Does event overlap the date that contains time."
(let* ((date (time-utc->date time))
(start (date->time-utc (drop-time date)))
(end (add-day start)))
(event-overlaps? ev start end)))
|