我尝试遵循 的文档clojure.instant/read-instant-timestamp
,内容如下:
clojure.instant/read-instant-timestamp 要将瞬间读取为 java.sql.Timestamp,请将 *data-readers* 绑定到 将此 var 映射为 'inst 键的值。时间戳保留 具有纳秒精度的小数秒。时区偏移量将 用于转换为 UTC。`
以下结果出乎意料:
(do
(require '[clojure.edn :as edn])
(require '[clojure.instant :refer [read-instant-timestamp]])
(let [instant "#inst \"1970-01-01T00:00:09.999-00:00\""
reader-map {'inst #'read-instant-timestamp}]
;; This binding is not appearing to do anything.
(binding [*data-readers* reader-map]
;; prints java.util.Date -- unexpected
(->> instant edn/read-string class println)
;; prints java.sql.Timestamp -- as desired
(->> instant (edn/read-string {:readers reader-map}) class println))))
如何使用*data-readers*
绑定?Clojure 版本 1.5.1。