(use ../spork/test) (import ../spork/date) (start-suite) (assert-docs "/spork/date") # `date/date?` and `date/assert-date` (assert (= (date/date? (os/date 1734364168)) true)) (assert (= (date/date? (thaw (os/date))) false)) (assert (= (date/assert-date (os/date 1734364168)) {:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 28 :week-day 1 :year 2024 :year-day 350})) (assert (= (try (date/assert-date (thaw (os/date))) ([_] "errored")) "errored")) # `date/compare-dates`, `date/lt`, and `date/gt` (assert (= (date/compare-dates (os/date 1734364168) (os/date 1734364168)) 0)) (assert (= (date/compare-dates (os/date 1734364160) (os/date 1734364168)) -1)) (assert (= (date/compare-dates (os/date 1734364168) (os/date 1734364160)) 1)) (assert (deep= (sort @[(os/date 1734364160) (os/date 1734364168)] date/lt) @[{:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 20 :week-day 1 :year 2024 :year-day 350} {:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 28 :week-day 1 :year 2024 :year-day 350}])) (assert (deep= (sort @[(os/date 1734364168) (os/date 1734364160)] date/lt) @[{:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 20 :week-day 1 :year 2024 :year-day 350} {:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 28 :week-day 1 :year 2024 :year-day 350}])) (assert (deep= (sort @[(os/date 1734364160) (os/date 1734364168)] date/gt) @[{:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 28 :week-day 1 :year 2024 :year-day 350} {:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 20 :week-day 1 :year 2024 :year-day 350}])) (assert (deep= (sort @[(os/date 1734364168) (os/date 1734364160)] date/gt) @[{:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 28 :week-day 1 :year 2024 :year-day 350} {:dst false :hours 15 :minutes 49 :month 11 :month-day 15 :seconds 20 :week-day 1 :year 2024 :year-day 350}])) # `date/from-string` (assert (= (date/assert-date (date/from-string "2024-12-16" "yyyy-MM-dd")) {:format-str "yyyy-MM-dd" :date-str "2024-12-16" :dst false :hours 0 :minutes 0 :month 11 :month-day 15 :seconds 0 :week-day 1 :year 2024 :year-day 350})) (assert (= (date/assert-date (date/from-string "January 1, 2021" "MMMM d, yyyy")) {:date-str "January 1, 2021" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 5 :year 2021 :year-day 0})) (assert (= (date/assert-date (date/from-string "01-AUG-24" "dd-MMM-yy")) {:date-str "01-AUG-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 7 :month-day 0 :seconds 0 :week-day 4 :year 2024 :year-day 213})) (assert (= (date/assert-date (date/from-string "22" "yy")) {:date-str "22" :format-str "yy" :dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 6 :year 2022 :year-day 0})) (assert (= (date/assert-date (date/from-string "2024-12-31" "yyyy-MM-dd")) {:date-str "2024-12-31" :format-str "yyyy-MM-dd" :dst false :hours 0 :minutes 0 :month 11 :month-day 30 :seconds 0 :week-day 2 :year 2024 :year-day 365})) (assert (= (date/assert-date (date/from-string "01-AUG-24" "dd-MMM-yy")) {:date-str "01-AUG-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 7 :month-day 0 :seconds 0 :week-day 4 :year 2024 :year-day 213})) (assert (= (date/assert-date (date/from-string "08/22" "MM/yy")) {:date-str "08/22" :format-str "MM/yy" :dst false :hours 0 :minutes 0 :month 7 :month-day 0 :seconds 0 :week-day 1 :year 2022 :year-day 212})) (assert (= (date/assert-date (date/from-string "08/22" "MM/dd")) {:date-str "08/22" :format-str "MM/dd" :dst false :hours 0 :minutes 0 :month 7 :month-day 21 :seconds 0 :week-day 6 :year 1970 :year-day 233})) (assert (= (date/assert-date (date/from-string "2024-01-10 04:30 PM" "yyyy-dd-MM hh:mm AM")) {:date-str "2024-01-10 04:30 PM" :format-str "yyyy-dd-MM hh:mm AM" :dst false :hours 16 :minutes 30 :month 9 :month-day 0 :seconds 0 :week-day 2 :year 2024 :year-day 274})) (assert (= (date/assert-date (date/from-string "2024-01-10 17:30" "yyyy-MM-dd HH:mm")) {:date-str "2024-01-10 17:30" :format-str "yyyy-MM-dd HH:mm" :dst false :hours 17 :minutes 30 :month 0 :month-day 9 :seconds 0 :week-day 3 :year 2024 :year-day 9})) (assert (= (date/assert-date (date/from-string "January 1, 2021" "MMMM d, yyyy")) {:date-str "January 1, 2021" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 5 :year 2021 :year-day 0})) (assert (= (date/assert-date (date/from-string "February 2, 2022" "MMMM d, yyyy")) {:date-str "February 2, 2022" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 1 :month-day 1 :seconds 0 :week-day 3 :year 2022 :year-day 32})) (assert (= (date/assert-date (date/from-string "March 3, 2023" "MMMM d, yyyy")) {:date-str "March 3, 2023" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 2 :month-day 2 :seconds 0 :week-day 5 :year 2023 :year-day 61})) (assert (= (date/assert-date (date/from-string "April 4, 2024" "MMMM d, yyyy")) {:date-str "April 4, 2024" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 3 :month-day 3 :seconds 0 :week-day 4 :year 2024 :year-day 94})) (assert (= (date/assert-date (date/from-string "May 5, 2025" "MMMM d, yyyy")) {:date-str "May 5, 2025" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 4 :month-day 4 :seconds 0 :week-day 1 :year 2025 :year-day 124})) (assert (= (date/assert-date (date/from-string "June 6, 2026" "MMMM d, yyyy")) {:date-str "June 6, 2026" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 5 :month-day 5 :seconds 0 :week-day 6 :year 2026 :year-day 156})) (assert (= (date/assert-date (date/from-string "July 7, 2027" "MMMM d, yyyy")) {:date-str "July 7, 2027" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 6 :month-day 6 :seconds 0 :week-day 3 :year 2027 :year-day 187})) (assert (= (date/assert-date (date/from-string "August 8, 2028" "MMMM d, yyyy")) {:date-str "August 8, 2028" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 7 :month-day 7 :seconds 0 :week-day 2 :year 2028 :year-day 220})) (assert (= (date/assert-date (date/from-string "September 9, 2029" "MMMM d, yyyy")) {:date-str "September 9, 2029" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 8 :month-day 8 :seconds 0 :week-day 0 :year 2029 :year-day 251})) (assert (= (date/assert-date (date/from-string "October 10, 2030" "MMMM d, yyyy")) {:date-str "October 10, 2030" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 9 :month-day 9 :seconds 0 :week-day 4 :year 2030 :year-day 282})) (assert (= (date/assert-date (date/from-string "November 11, 2031" "MMMM d, yyyy")) {:date-str "November 11, 2031" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 10 :month-day 10 :seconds 0 :week-day 2 :year 2031 :year-day 314})) (assert (= (date/assert-date (date/from-string "December 12, 2032" "MMMM d, yyyy")) {:date-str "December 12, 2032" :format-str "MMMM d, yyyy" :dst false :hours 0 :minutes 0 :month 11 :month-day 11 :seconds 0 :week-day 0 :year 2032 :year-day 346})) (assert (= (date/assert-date (date/from-string "01-JAN-24" "dd-MMM-yy")) {:date-str "01-JAN-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 1 :year 2024 :year-day 0})) (assert (= (date/assert-date (date/from-string "02-FEB-24" "dd-MMM-yy")) {:date-str "02-FEB-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 1 :month-day 1 :seconds 0 :week-day 5 :year 2024 :year-day 32})) (assert (= (date/assert-date (date/from-string "03-MAR-24" "dd-MMM-yy")) {:date-str "03-MAR-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 2 :month-day 2 :seconds 0 :week-day 0 :year 2024 :year-day 62})) (assert (= (date/assert-date (date/from-string "04-APR-24" "dd-MMM-yy")) {:date-str "04-APR-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 3 :month-day 3 :seconds 0 :week-day 4 :year 2024 :year-day 94})) (assert (= (date/assert-date (date/from-string "05-MAY-24" "dd-MMM-yy")) {:date-str "05-MAY-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 4 :month-day 4 :seconds 0 :week-day 0 :year 2024 :year-day 125})) (assert (= (date/assert-date (date/from-string "06-JUN-24" "dd-MMM-yy")) {:date-str "06-JUN-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 5 :month-day 5 :seconds 0 :week-day 4 :year 2024 :year-day 157})) (assert (= (date/assert-date (date/from-string "07-JUL-24" "dd-MMM-yy")) {:date-str "07-JUL-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 6 :month-day 6 :seconds 0 :week-day 0 :year 2024 :year-day 188})) (assert (= (date/assert-date (date/from-string "08-AUG-24" "dd-MMM-yy")) {:date-str "08-AUG-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 7 :month-day 7 :seconds 0 :week-day 4 :year 2024 :year-day 220})) (assert (= (date/assert-date (date/from-string "09-SEP-24" "dd-MMM-yy")) {:date-str "09-SEP-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 8 :month-day 8 :seconds 0 :week-day 1 :year 2024 :year-day 252})) (assert (= (date/assert-date (date/from-string "10-OCT-24" "dd-MMM-yy")) {:date-str "10-OCT-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 9 :month-day 9 :seconds 0 :week-day 4 :year 2024 :year-day 283})) (assert (= (date/assert-date (date/from-string "11-NOV-24" "dd-MMM-yy")) {:date-str "11-NOV-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 10 :month-day 10 :seconds 0 :week-day 1 :year 2024 :year-day 315})) (assert (= (date/assert-date (date/from-string "12-DEC-24" "dd-MMM-yy")) {:date-str "12-DEC-24" :format-str "dd-MMM-yy" :dst false :hours 0 :minutes 0 :month 11 :month-day 11 :seconds 0 :week-day 4 :year 2024 :year-day 346})) (assert-error "could not match date with provided format: \"1/2/2024\" and \"MM/dd/yyyy\"" (date/from-string "1/2/2024" "MM/dd/yyyy")) (assert-error "could not match date with provided format: \"1/2/24\" and \"M/d/yyyy\"" (date/from-string "1/2/24" "M/d/yyyy")) (assert-error "could not match date with provided format: \"1/2/2024\" and \"M/d/yy\"" (date/from-string "1/2/2024" "M/d/yy")) (def date-2024-01-01 (date/from-string "2024-01-01" "yyyy-MM-dd")) (def date-2024-06-07 (date/from-string "2024-06-07" "yyyy-MM-dd")) (def date-2024-07-06 (date/from-string "2024-07-06" "yyyy-MM-dd")) (def date-2024-12-31 (date/from-string "2024-12-31" "yyyy-MM-dd")) # `date/add` (assert (= (date/add date-2024-01-01 :days 4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 4 :seconds 0 :week-day 5 :year 2024 :year-day 4})) (assert (= (date/add date-2024-01-01 :months 2) {:dst false :hours 0 :minutes 0 :month 2 :month-day 0 :seconds 0 :week-day 5 :year 2024 :year-day 60})) (assert (= (date/add date-2024-01-01 :years 4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 6 :year 2028 :year-day 0})) (assert (= (date/add date-2024-01-01 :hours 4) {:dst false :hours 4 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 1 :year 2024 :year-day 0})) (assert (= (date/add date-2024-01-01 :seconds 4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 4 :week-day 1 :year 2024 :year-day 0})) # `date/add` with negative values subtracts (assert (= (date/add date-2024-01-01 :days -4) {:dst false :hours 0 :minutes 0 :month 11 :month-day 27 :seconds 0 :week-day 4 :year 2023 :year-day 361})) (assert (= (date/add date-2024-01-01 :months -2) {:dst false :hours 0 :minutes 0 :month 10 :month-day 0 :seconds 0 :week-day 3 :year 2023 :year-day 304})) (assert (= (date/add date-2024-01-01 :years -4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 3 :year 2020 :year-day 0})) (assert (= (date/add date-2024-01-01 :hours -4) {:dst false :hours 20 :minutes 0 :month 11 :month-day 30 :seconds 0 :week-day 0 :year 2023 :year-day 364})) (assert (= (date/add date-2024-01-01 :seconds -4) {:dst false :hours 23 :minutes 59 :month 11 :month-day 30 :seconds 56 :week-day 0 :year 2023 :year-day 364})) # `date/sub` (assert (= (date/sub date-2024-01-01 :days 4) {:dst false :hours 0 :minutes 0 :month 11 :month-day 27 :seconds 0 :week-day 4 :year 2023 :year-day 361})) (assert (= (date/sub date-2024-01-01 :months 2) {:dst false :hours 0 :minutes 0 :month 10 :month-day 0 :seconds 0 :week-day 3 :year 2023 :year-day 304})) (assert (= (date/sub date-2024-01-01 :years 4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 3 :year 2020 :year-day 0})) (assert (= (date/sub date-2024-01-01 :hours 4) {:dst false :hours 20 :minutes 0 :month 11 :month-day 30 :seconds 0 :week-day 0 :year 2023 :year-day 364})) (assert (= (date/sub date-2024-01-01 :seconds 4) {:dst false :hours 23 :minutes 59 :month 11 :month-day 30 :seconds 56 :week-day 0 :year 2023 :year-day 364})) (assert (= (date/sub date-2024-01-01 :days 3 :seconds 4) {:dst false :hours 23 :minutes 59 :month 11 :month-day 27 :seconds 56 :week-day 4 :year 2023 :year-day 361})) (assert (= (date/sub date-2024-01-01 :months 4 :days 2 :seconds 4) {:dst false :hours 23 :minutes 59 :month 7 :month-day 28 :seconds 56 :week-day 2 :year 2023 :year-day 240})) (assert (= (date/sub date-2024-01-01 :years 15 :months 99 :minutes -5 :seconds 4) {:dst false :hours 0 :minutes 4 :month 9 :month-day 0 :seconds 56 :week-day 0 :year 2000 :year-day 274})) (assert (= (date/sub date-2024-01-01 :seconds 900_000_000) {:dst false :hours 8 :minutes 0 :month 5 :month-day 24 :seconds 0 :week-day 0 :year 1995 :year-day 175})) # `date/sub` with negative values adds (assert (= (date/sub date-2024-01-01 :days -4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 4 :seconds 0 :week-day 5 :year 2024 :year-day 4})) (assert (= (date/sub date-2024-01-01 :months -2) {:dst false :hours 0 :minutes 0 :month 2 :month-day 0 :seconds 0 :week-day 5 :year 2024 :year-day 60})) (assert (= (date/sub date-2024-01-01 :years -4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 6 :year 2028 :year-day 0})) (assert (= (date/sub date-2024-01-01 :hours -4) {:dst false :hours 4 :minutes 0 :month 0 :month-day 0 :seconds 0 :week-day 1 :year 2024 :year-day 0})) (assert (= (date/sub date-2024-01-01 :seconds -4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 0 :seconds 4 :week-day 1 :year 2024 :year-day 0})) (assert (= (date/sub date-2024-01-01 :days -3 :seconds -4) {:dst false :hours 0 :minutes 0 :month 0 :month-day 3 :seconds 4 :week-day 4 :year 2024 :year-day 3})) (assert (= (date/sub date-2024-01-01 :months -4 :days -2 :seconds -4) {:dst false :hours 0 :minutes 0 :month 4 :month-day 2 :seconds 4 :week-day 5 :year 2024 :year-day 123})) (assert (= (date/sub date-2024-01-01 :years -15 :months -99 :minutes 5 :seconds -4) {:dst false :hours 23 :minutes 55 :month 2 :month-day 30 :seconds 4 :week-day 0 :year 2047 :year-day 89})) (assert (= (date/sub date-2024-01-01 :seconds -900_000_000) {:dst false :hours 16 :minutes 0 :month 6 :month-day 7 :seconds 0 :week-day 1 :year 2052 :year-day 189})) # date/to-string (assert (= (date/to-string date-2024-01-01 "yy-MM-dd") "24-01-01")) (assert (= (date/to-string date-2024-01-01 "dd-MM-yy") "01-01-24")) (assert (= (date/to-string date-2024-01-01 "yyyy-MM-dd") "2024-01-01")) (assert (= (date/to-string date-2024-01-01 "MMMM dd, yyyy") "January 01, 2024")) (assert (= (date/to-string date-2024-01-01 "dd-MMM-yy") "01-JAN-24")) (assert (= (date/to-string date-2024-01-01 "yy-MM-dd") "24-01-01")) (assert (= (date/to-string date-2024-01-01 "yyyy-MM-dd") "2024-01-01")) (assert (= (date/to-string date-2024-01-01 "yy-MM-dd") "24-01-01")) (assert (= (date/to-string date-2024-01-01 "M/d/yyyy") "1/1/2024")) (assert (= (date/to-string date-2024-01-01 "MM/dd/yyyy") "01/01/2024")) (assert (= (date/to-string date-2024-01-01 "MM/dd/yyyy HH:mm") "01/01/2024 00:00")) (assert (= (date/to-string date-2024-01-01 "MM/dd/yyyy HH:mm:ss") "01/01/2024 00:00:00")) (assert (= (date/to-string date-2024-01-01 "MM/dd/yyyy hh:mm AM") "01/01/2024 12:00 AM")) (assert (= (date/to-string date-2024-01-01 "MM/dd/yyyy hh:mm:ss AM") "01/01/2024 12:00:00 AM")) (assert (= (date/to-string date-2024-06-07 "yy-MM-dd") "24-06-07")) (assert (= (date/to-string date-2024-06-07 "dd-MM-yy") "07-06-24")) (assert (= (date/to-string date-2024-06-07 "yyyy-MM-dd") "2024-06-07")) (assert (= (date/to-string date-2024-06-07 "MMMM dd, yyyy") "June 07, 2024")) (assert (= (date/to-string date-2024-06-07 "dd-MMM-yy") "07-JUN-24")) (assert (= (date/to-string date-2024-06-07 "yy-MM-dd") "24-06-07")) (assert (= (date/to-string date-2024-06-07 "yyyy-MM-dd") "2024-06-07")) (assert (= (date/to-string date-2024-06-07 "yy-MM-dd") "24-06-07")) (assert (= (date/to-string date-2024-06-07 "M/d/yyyy") "6/7/2024")) (assert (= (date/to-string date-2024-06-07 "MM/dd/yyyy") "06/07/2024")) (assert (= (date/to-string date-2024-06-07 "MM/dd/yyyy HH:mm") "06/07/2024 00:00")) (assert (= (date/to-string date-2024-06-07 "MM/dd/yyyy HH:mm:ss") "06/07/2024 00:00:00")) (assert (= (date/to-string date-2024-06-07 "MM/dd/yyyy hh:mm AM") "06/07/2024 12:00 AM")) (assert (= (date/to-string date-2024-06-07 "MM/dd/yyyy hh:mm:ss AM") "06/07/2024 12:00:00 AM")) (assert (= (date/to-string date-2024-07-06 "yy-MM-dd") "24-07-06")) (assert (= (date/to-string date-2024-07-06 "dd-MM-yy") "06-07-24")) (assert (= (date/to-string date-2024-07-06 "yyyy-MM-dd") "2024-07-06")) (assert (= (date/to-string date-2024-07-06 "MMMM dd, yyyy") "July 06, 2024")) (assert (= (date/to-string date-2024-07-06 "dd-MMM-yy") "06-JUL-24")) (assert (= (date/to-string date-2024-07-06 "yy-MM-dd") "24-07-06")) (assert (= (date/to-string date-2024-07-06 "yyyy-MM-dd") "2024-07-06")) (assert (= (date/to-string date-2024-07-06 "yy-MM-dd") "24-07-06")) (assert (= (date/to-string date-2024-07-06 "M/d/yyyy") "7/6/2024")) (assert (= (date/to-string date-2024-07-06 "MM/dd/yyyy") "07/06/2024")) (assert (= (date/to-string date-2024-07-06 "MM/dd/yyyy HH:mm") "07/06/2024 00:00")) (assert (= (date/to-string date-2024-07-06 "MM/dd/yyyy HH:mm:ss") "07/06/2024 00:00:00")) (assert (= (date/to-string date-2024-07-06 "MM/dd/yyyy hh:mm AM") "07/06/2024 12:00 AM")) (assert (= (date/to-string date-2024-07-06 "MM/dd/yyyy hh:mm:ss AM") "07/06/2024 12:00:00 AM")) (assert (= (date/to-string date-2024-12-31 "yy-MM-dd") "24-12-31")) (assert (= (date/to-string date-2024-12-31 "dd-MM-yy") "31-12-24")) (assert (= (date/to-string date-2024-12-31 "yyyy-MM-dd") "2024-12-31")) (assert (= (date/to-string date-2024-12-31 "MMMM dd, yyyy") "December 31, 2024")) (assert (= (date/to-string date-2024-12-31 "dd-MMM-yy") "31-DEC-24")) (assert (= (date/to-string date-2024-12-31 "yy-MM-dd") "24-12-31")) (assert (= (date/to-string date-2024-12-31 "yyyy-MM-dd") "2024-12-31")) (assert (= (date/to-string date-2024-12-31 "yy-MM-dd") "24-12-31")) (assert (= (date/to-string date-2024-12-31 "M/d/yyyy") "12/31/2024")) (assert (= (date/to-string date-2024-12-31 "MM/dd/yyyy") "12/31/2024")) (assert (= (date/to-string date-2024-12-31 "MM/dd/yyyy HH:mm") "12/31/2024 00:00")) (assert (= (date/to-string date-2024-12-31 "MM/dd/yyyy HH:mm:ss") "12/31/2024 00:00:00")) (assert (= (date/to-string date-2024-12-31 "MM/dd/yyyy hh:mm AM") "12/31/2024 12:00 AM")) (assert (= (date/to-string date-2024-12-31 "MM/dd/yyyy hh:mm:ss AM") "12/31/2024 12:00:00 AM")) # `date/diff` (assert (= (date/diff (date/from-string "1991-08-27" "yyyy-MM-dd") (date/from-string "2024-12-17" "yyyy-MM-dd")) -1051142400)) (assert (= (date/diff (date/from-string "2024-12-17" "yyyy-MM-dd") (date/from-string "1991-08-27" "yyyy-MM-dd")) 1051142400)) (assert (= (date/diff (date/from-string "2024-12-17" "yyyy-MM-dd") (date/from-string "1998-07-14" "yyyy-MM-dd")) 834019200)) # `date/between?` (assert (= (date/between? (date/from-string "2024-01-01" "yyyy-MM-dd") (date/from-string "2023-12-31" "yyyy-MM-dd") (date/from-string "2024-01-02" "yyyy-MM-dd")) true)) (assert (= (date/between? (date/from-string "2024-01-01" "yyyy-MM-dd") (date/from-string "2024-01-02" "yyyy-MM-dd") (date/from-string "2023-12-31" "yyyy-MM-dd")) true)) (assert (= (date/between? (date/from-string "2025-01-01" "yyyy-MM-dd") (date/from-string "2023-12-31" "yyyy-MM-dd") (date/from-string "2024-01-02" "yyyy-MM-dd")) false)) (end-suite)