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
- Clojure’s
clj-time
library: https://github.com/clj-time/clj-time - Java’s
java.time
package (Java 8 and later): https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html - Guida ufficiale Clojure: https://clojure.org/guides/destructuring
- Documentazione
SimpleDateFormat
: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html