Json 如何解码并格式化标记的LocalDateTime值
这是我的Clojurescript函数Json 如何解码并格式化标记的LocalDateTime值,json,clojure,clojurescript,reagent,transit,Json,Clojure,Clojurescript,Reagent,Transit,这是我的Clojurescript函数 (defn message-list [messages] (println messages) ;; stmt#1 [:ul.messages (for [{:keys [timestamp message name]} @messages] ^{:key timestamp} [:li [:time (.toLocaleString timestamp)] ;; stmt#2 [:p messa
(defn message-list [messages]
(println messages) ;; stmt#1
[:ul.messages
(for [{:keys [timestamp message name]} @messages]
^{:key timestamp}
[:li
[:time (.toLocaleString timestamp)] ;; stmt#2
[:p message]
[:p " - " name]])])
stmt#1
正在打印
#<Atom: [{:id 1, :name Adeel Ansari, :message Hello, from the other side.,
:timestamp #object[Transit$TaggedValue [TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]]}]>
[TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]
现在,我想把它打印成,比如,
13/01/2020 18:19
;我该怎么做呢?我不知道如何解码标记的值。您可以使用-rep
从TaggedValue
获取值,然后,您可以使用一些库解析该字符串
例如,您可以使用解析日期,如下所示:
(让[tv(t/标记值“LocalDateTime”2019-01-01T11:22:33.123”)]
(cljc.java-time.local-date-time/parse(.-rep tv))=>#对象[LocalDateTime 2019-01-01T11:22:33.123]
或者你可以使用;然后你的代码看起来像
(ns xx.yy.zz)
)要求。。
[勾选美国地区]
[勾选alpha.api:as t]
..
))
...
(defn消息列表[消息]
...
[:李
[:time(t/格式(t/格式化程序“dd/MM/yyyy HH:MM”)(t/解析(.-rep timestamp))]
...]
...)
...
理想情况下,您可以直接向transit提供一个处理函数,以便它可以在读取时转换值。首先,必须在服务器上执行同样的操作才能创建TaggedValue
在构建您可以提供的
:handlers {"LocalDateTime" (fn [string-val] (parse-the-timestamp string-val))}
格式化应该延迟到需要时,但最好不要让TaggedValue脱离read函数,因为它将代码与transit实现耦合起来。谢谢,Thomas;这听起来是个很好的建议。实际上,我在调查handler,但不知道怎么做。你的片段给了我一个提示。