web-dev-qa-db-fra.com

Quel est le meilleur moyen d'obtenir la date et l'heure à Clojure?

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?

35
Ali

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.

49
Goran Jovic

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)
25
Brad Koch

Il y a bibliothèque Clojure-wrapper pour Joda-Time . Ou vous devrez utiliser Java interop avec le standard Java API.

17
robert_x44

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.

10
Kenny Evitt

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))

8
Édipo Féderle