(defpackage time-iterator (:nicknames ti-it)) (in-package ti-it) ;;;***************************************************************** ;;;Customize timezone here****************************************** (defparameter *timezone* -9) (defparameter *day-sec* (* 24 60 60)) (defvar *from-date-sec*) (defvar *to-date-sec*) (defvar *increment*) ;;;***************************************************************** ;;;Customize from date on the next line***************************** (let ((second 0) (minute 0) (hour 13) (date 1) (month 1) (year 1970) (timezone *timezone*)) (setq *from-date-sec* (encode-universal-time second minute hour date month year timezone))) ;;;***************************************************************** ;;;Customize to date on the next line******************************* (let ((second 0) (minute 0) (hour 13) (date 1) (month 5) (year 1970) (timezone *timezone*)) (setq *to-date-sec* (encode-universal-time second minute hour date month year timezone))) ;;;***************************************************************** ;;;Customize number-days to increment******************************* (let ((number-days 30)) (setq *increment* (* number-days *day-sec*))) (loop for date-in-sec from *from-date-sec* to *to-date-sec* by *increment* for date-3days = (- date-in-sec (* 3 *day-sec*)) for date+3days = (+ date-in-sec (* 3 *day-sec*)) ;;Could change the number(s) 3 here. do (loop for utime in (list date-3days date-in-sec date+3days) do (multiple-value-bind (second minute hour date month year day summer timezone) (decode-universal-time utime *timezone*) (loop for value in (list date month year) for desc in (list "date" "month" "year") do (princ desc) do (princ ":") do (princ value) do (princ " ") finally (terpri))) finally (terpri)) finally (si:quit))