From e7c99e14691e768e0c3e7c54049301183ddfc32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 24 Mar 2020 22:52:57 +0100 Subject: Change date{,time}-difference to hopefully sensible types. --- module/vcomponent/datetime.scm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'module/vcomponent/datetime.scm') diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm index 4db9dbf1..5df4dfab 100644 --- a/module/vcomponent/datetime.scm +++ b/module/vcomponent/datetime.scm @@ -51,12 +51,20 @@ Event must have the DTSTART and DTEND attribute set." (if (date? (attr e 'DTSTART)) #24:00:00 #01:00:00)) - (datetime-difference (as-datetime (attr e 'DTEND)) - (as-datetime (attr e 'DTSTART))))) + ((if (date? (attr e 'DTSTART)) + date-difference datetime-difference) + (attr e 'DTEND) (attr e 'DTSTART)))) (define-public (event-length/clamped start-date end-date e) - (datetime-difference (datetime-min (datetime date: (date+ end-date (date day: 1))) (as-datetime (attr e 'DTEND))) - (datetime-max (datetime date: start-date) (as-datetime (attr e 'DTSTART))))) + (if (date? (attr e 'DTSTART)) + (date-difference (date-min (date+ end-date (date day: 1)) + (attr e 'DTEND)) + (date-max start-date + (attr e 'DTSTART))) + (datetime-difference (datetime-min (datetime date: (date+ end-date (date day: 1))) + (get-datetime (attr e 'DTEND))) + (datetime-max (datetime date: start-date) + (get-datetime (attr e 'DTSTART)))))) ;; Returns the length of the part of @var{e} which is within the day ;; starting at the time @var{start-of-day}. -- cgit v1.2.3