Function: icalendar-recur-find-daily-interval
icalendar-recur-find-daily-interval is a byte-compiled function
defined in icalendar-recur.el.gz.
Signature
(icalendar-recur-find-daily-interval TARGET DTSTART INTERVALSIZE &optional VTIMEZONE)
Documentation
Find a DAILY recurrence interval.
See icalendar-recur-find-interval for arguments' meanings.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/icalendar-recur.el.gz
(defun icr:find-daily-interval (target dtstart intervalsize &optional vtimezone)
"Find a DAILY recurrence interval.
See `icalendar-recur-find-interval' for arguments' meanings."
(let* ((start-absdate (calendar-absolute-from-gregorian
(ical:date/time-to-date dtstart)))
(target-absdate (calendar-absolute-from-gregorian
(ical:date/time-to-date target)))
;; low-absdate is the closest absolute date below target that
;; is an integer multiple of intervalsize days from dtstart
(low-absdate (- target-absdate
(mod (- target-absdate start-absdate) intervalsize)))
(high-absdate (1+ low-absdate))
(next-low-absdate (+ low-absdate intervalsize)))
(let* ((low-dt (ical:date-to-date-time
(calendar-gregorian-from-absolute low-absdate)))
(high-dt (ical:date-to-date-time
(calendar-gregorian-from-absolute high-absdate)))
(next-low-dt (unless (= high-absdate next-low-absdate)
(ical:date-to-date-time
(calendar-gregorian-from-absolute next-low-absdate)))))
(when vtimezone
(icr:tz-set-zone low-dt vtimezone)
(icr:tz-set-zone high-dt vtimezone)
(when next-low-dt
(icr:tz-set-zone next-low-dt vtimezone)))
;; Return the bounds:
(icr:make-interval low-dt high-dt next-low-dt))))