J'ai besoin de consigner certains événements sur un scénario client-serveur Clojure, mais il me semble que Clojure ne fournit pas de fonction date/heure. Quelqu'un peut-il confirmer cela ou je manque quelque chose ici?! Si j'ai raison, je dois utiliser Java interop, non?
Si tout ce dont vous avez besoin est d'obtenir l'heure et la date actuelles de votre enregistreur, alors cette fonction est OK:
(defn now [] (new Java.util.Date))
Maintenant que vous l'avez mentionné, il serait utile de prendre en charge les objets Date immuables.
Java 1.8 a ajouté le package Java.time au noyau JDK pour nettoyer bon nombre des frustrations avec l'état de la date et de l'heure en Java. Étant donné que Java.time est maintenant une partie largement disponible du noyau Java avec une API beaucoup améliorée, je vous encourage à lui donner le premier aperçu lors de l'écriture de nouveau code de date et d'heure.
Voici comment récupérer la date et l'heure actuelles:
(Java.time.LocalDateTime/now)
Il y a bibliothèque Clojure-wrapper pour Joda-Time . Ou vous devrez utiliser Java interop avec le standard Java API.
Avec clj-time , la bibliothèque Clojure qui encapsule la bibliothèque Java Joda Time, vous pouvez utiliser du code comme celui-ci:
(require '[clj-time.core :as time])
(require '[clj-time.format :as time-format])
(time/now) => #<DateTime 2013-03-31T03:23:47.328Z>
(def time-formatter (time-format/formatters :basic-date-time)) ;; ISO 8601 UTC format
(time-format/unparse custom-formatter (date-time 2010 10 3)) => "20101003T000000.000Z"
L'un des avantages de Joda Time (et donc de clj-time) est que les nouvelles versions prennent en charge de nouveaux changements de fuseaux horaires.
Si vous n'avez besoin de rien de plus avancé, utilisez simplement les classes Java.
(.format (Java.text.SimpleDateFormat. "MM/dd/yyyy") (new Java.util.Date))