リテラルを読み込むと、#inst
デフォルトでjava.util.Date
インスタンスが作成されます。これらには、名前空間で定義されたメソッドprint-method
(オブジェクトの出力表現を担当するマルチメソッド) がありclojure.instant
ます (1.5.1 ソースの関連するフラグメントはhere です)。
clj-time は、DateTime
カスタムprint-method
メソッドが設定されていない Joda-Time の型を使用します。print-method
往復しない表現を生成する を持つことはめったに望ましくないため、これは理にかなっています。往復するには、非標準の#inst
リーダーを使用する必要があります。それを達成するために、edn データを読んでいる場合は、ドキュメント文字列に記載されているように、適切なリーダーを使用clojure.edn/read
(またはread-string
) 渡すことができます。
(require '[clojure.edn :as edn])
(edn/read {:readers {'inst your-inst-reader}} rdr)
clj-time を使用すると、 のyour-inst-reader
ようになります#(clj-time.format/parse some-formatter %)
。print-method
の例に従って、一致する定義を指定できますclojure.instant
。(または、単にprint-method
定義を提供し、完全なラウンドトリップが得られないことを覚えておくこともできます。clj-time は非常に便利な強制関数を提供します (以下を参照)。これで問題ない可能性があります。)
または、インスタンスを印刷して読み取り、 sjava.util.Date
との間で変換することもできます。DateTime
にはそれを行うための関数がありますclj-time.coerce
。