codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; weekdays between two dates (define (julian year month day) (let* ((a (quotient (- 14 month) 12)) (y (+ year 4800 (- a))) (m (+ month (* 12 a) -3))) (+ day (quotient (+ (* 153 m) 2) 5) (* 365 y) (quotient y 4) (- (quotient y 100)) (quotient y 400) (- 32045)))) (define (weekdays y-from m-from d-from y-to m-to d-to) (let* ((from (julian y-from m-from d-from)) (to (julian y-to m-to d-to)) (diff (- to from))) (+ (* 5 (quotient diff 7)) (let loop ((k (modulo diff 7)) (w 0)) (if (zero? k) w (loop (- k 1) (+ w (if (< (modulo (- to k) 7) 5) 1 0)))))))) (display (weekdays 2013 7 5 2013 7 6)) (newline) (display (weekdays 2013 7 5 2013 7 7)) (newline) (display (weekdays 2013 7 5 2013 7 8)) (newline) (display (weekdays 2013 7 5 2013 7 9)) (newline) (display (weekdays 2013 7 5 2013 7 10)) (newline) (display (weekdays 2013 7 5 2013 7 11)) (newline) (display (weekdays 2013 7 5 2013 7 18)) (newline) (display (weekdays 2013 7 5 2013 7 25)) (newline)
Private
[
?
]
Run code
Submit