Working with a custom handin-server, I have a date value which represents a deadline, but I also want to allow late submission up to 3 days later than that (well, an arbitrary number of days). Hence, I need to check whether the current date is at most 3 days later than the first one.
In the configuration file I read a custom entry for the deadline, indicating year, month, day, hours, minutes and seconds. Then I guess I could do: (define d (seconds->date (find-seconds seconds minutes hours day month year))) (define d+1 (seconds->date (find-seconds seconds minutes hours (+ day 1) month year)) (define d+2 (seconds->date (find-seconds seconds minutes hours (+ day 2) month year)) (define d+3 (seconds->date (find-seconds seconds minutes hours (+ day 3) month year)) And then do a comparison, like (let ([now (current-seconds)]) (or (> now (date->seconds d)) (> now (date->seconds d+1) ...)) But this looks too low level to me, and surprisingly the utilities provided by racket/date are somewhat sparse. Does anyone know about a higher-level library for manipulating dates, and performing arithmetic comparisons and operations? Ideally I'd imagine something like: (let ([now (current-date)]) (cond [(date< now d) ...] ;; ok [(date< now (date-add-day d 1)) ... ] ;; warning 1 day late [(date< now (date-add-day d 2)) ... ] ;; warning 2 days late .... [else ...] ;; submission rejected because it is past deadline + extra days ) Thanks! -- Ismael
____________________ Racket Users list: http://lists.racket-lang.org/users