web-dev-qa-db-ja.com

Clojureで日付と時刻を取得する最良の方法は何ですか?

Clojureクライアント/サーバーシナリオでいくつかのイベントをログに記録する必要がありますが、Clojureは日付/時刻関数を提供していないようです。誰かがこれを確認できますか、ここで何か不足していますか?!私が正しい場合は、Java interopを使用する必要がありますよね?

35
Ali

ロガーの現在の日時を取得することだけが必要な場合、この関数は問題ありません。

 (defn now [] (new Java.util.Date))

これについて説明したので、不変のDateオブジェクトをサポートすると便利です。

49
Goran Jovic

Java 1.8は Java.time パッケージをコアJDKに追加し、 フラストレーション の多くをJavaの日付と時刻の状態でクリーンアップしました。 Java.timeは現在、コアの広く利用可能な部分JavaでAPIが大幅に改善されているため、新しい日付と時刻のコードを書くときに最初に見てみることをお勧めします。

現在の日時を取得する方法は次のとおりです。

(Java.time.LocalDateTime/now)
25
Brad Koch

Joda-TimeのClojure-wrapperライブラリ があります。または、Java相互運用を標準のJava APIと使用する必要があります。

17
robert_x44

clj-time 、Java Joda TimeライブラリをラップするClojureライブラリでは、次のようなコードを使用できます。

(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"

Joda Time(およびclj-time)の利点の1つは、新しいリリースがタイムゾーンの新しい変更をサポートすることです。

10
Kenny Evitt

より高度なものを必要としない場合は、Javaクラスを使用してください。

(.format (Java.text.SimpleDateFormat. "MM/dd/yyyy") (new Java.util.Date))

8
Édipo Féderle