Clojure:
Twee datums vergelijken

Hoe:

Clojure maakt gebruik van de Java interop-mogelijkheden om met datums om te gaan. Laten we onze mouwen opstropen en duiken erin:

;; Importeer Java Date klasse
(import java.util.Date)

;; Maak twee datuminstanties
(def date1 (java.util.Date.))
(Thread/sleep 1000) ;; Wacht even
(def date2 (java.util.Date.))

;; Vergelijk de datums
(println (.before date1 date2)) ; waar, date1 is voor date2
(println (.after date1 date2))  ; onwaar, date1 is niet na date2
(println (.equals date1 date2)) ; onwaar, date1 is niet hetzelfde als date2

Een voorbeelduitvoer kan er zo uitzien, maar met verschillende tijdstempels:

waar
onwaar
onwaar

Diepgaand

In het verleden gebruikten Clojure-ontwikkelaars vaak Java’s Date voor datumoperaties, waarbij methoden werden aangeroepen met behulp van de puntoperator zoals eerder gezien. Alternatieven zijn onder meer clj-time, een Clojure-bibliotheek die Joda-Time omhult.

Een voorbeeld met clj-time ziet er als volgt uit:

;; Voeg clj-time toe aan je projectafhankelijkheden
(require '[clj-time.core :as time])
(require '[clj-time.coerce :as coerce])

;; Maak twee datum-tijdinstanties
(def date-time1 (time/now))
(Thread/sleep 1000) ;; Wacht een seconde
(def date-time2 (time/now))

;; Vergelijk met behulp van clj-time functies
(println (time/before? date-time1 date-time2)) ; waar
(println (time/after? date-time1 date-time2))  ; onwaar
(println (time/equal? date-time1 date-time2))  ; onwaar

Clojure’s standpunt over tijd is het benutten van Java’s bibliotheken, terwijl clj-time integreert met Joda-Time voor een meer idiomatische Clojure-ervaring.

Sinds Java 8 is het java.time pakket—geïnspireerd door Joda-Time—de voorkeursmanier om met datums en tijden in Java om te gaan en, bij uitbreiding, in Clojure via interop. Verbeterd ontwerp en extra mogelijkheden zoals tijdzones maken java.time een robuuste keuze.

Zie Ook