Clojure:
Kahden päivämäärän vertailu
How to:
Clojuren clj-time kirjasto on kätevä päivämäärävertailuihin:
(require '[clj-time.core :as time])
(require '[clj-time.coerce :as coerce])
(let [date1 (coerce/to-date-time "2021-01-01T12:00:00.000Z")
date2 (coerce/to-date-time "2021-12-31T16:00:00.000Z")]
{:before (time/before? date1 date2)
:after (time/after? date1 date2)
:equal (time/equal? date1 date2)})Tuloste:
{:before true, :after false, :equal false}Deep Dive
Alun perin Clojure-kielessä päivämäärien käsittely oli java.util.Date-luokan varassa. clj-time perustuu Joda-Time-kirjastoon, joka on vanhan java.util.Date-luokan parempi versio. Jos clj-time ei ole käytössä, voi käyttää myös java.time-kirjastoa:
java.time-esimerkki:
(import java.time.ZonedDateTime)
(defn compare-dates [date1-str date2-str]
(let [date1 (ZonedDateTime/parse date1-str)
date2 (ZonedDateTime/parse date2-str)]
(cond
(.isBefore date1 date2) "date1 is before date2"
(.isAfter date1 date2) "date1 is after date2"
:else "dates are equal")))
(compare-dates "2021-01-01T12:00:00Z" "2021-12-31T16:00:00Z")Tuloste:
"date1 is before date2"Verrattuna Joda-Timeen java.time on osa Java 8:aa ja sitä uudempia versioita.
Päivämäärien vertailu voi tuntua suoraviivaiselta, mutta aikavyöhykkeet ja kesäaikaan siirtyminen tekevät siitä monimutkaista. On tärkeää valita oikea kirjasto, joka käsittelee nämä yksityiskohdat.
See Also
clj-timeGitHub-sivusto: https://github.com/clj-time/clj-time- Java 8
java.timedokumentaatio: https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html - Joda-Time projekti: http://www.joda.org/joda-time/
Nämä materiaalit auttavat syventämään ymmärrystä päivämäärien käsittelystä Clojuressa.