Conversione di una data in una stringa

Clojure:
Conversione di una data in una stringa

How to:

Usa java.text.SimpleDateFormat e java.util.Date per convertire date. Ecco un esempio:

(import '[java.text SimpleDateFormat]
        '[java.util Date])

(defn format-date [date pattern]
  (let [formatter (SimpleDateFormat. pattern)]
    (.format formatter date)))

(println (format-date (Date.) "dd/MM/yyyy"))

Output di esempio:

31/03/2023

Deep Dive

Clojure, essendo un dialetto di Lisp che gira su JVM, sfrutta le librerie Java per la manipolazione delle date. Sebbene sia possibile usare librerie Java native come SimpleDateFormat, Clojure offre anche librerie come clj-time che è una wrapper della libreria Joda-Time, fornendo un’interfaccia più idiomatica.

Prima dell’adozione di Joda-Time e poi java.time, programmatori spesso riscontravano difetti e limitazioni nell’API data/ora di Java.

Rispetto a SimpleDateFormat, che è mutabile e non thread-safe, considera di usare java.time.format.DateTimeFormatter se sei su Java 8 o versioni successive:

(import '[java.time.format DateTimeFormatter]
        '[java.time LocalDateTime])

(defn format-date-java8 [date pattern]
  (let [formatter (DateTimeFormatter/ofPattern pattern)]
    (.format date formatter)))

(println (format-date-java8 (LocalDateTime/now) "dd/MM/yyyy"))

L’alternativa per la conversione di date in Clojure è più espressiva e direttamente supportata nell’ecosistema.

See Also