json - 如何解码并格式化标记的 LocalDateTime 值
问题描述
这是我的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 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]]}]>
并且stmt#2
正在打印,
[TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]
现在,我想将其打印为13/01/2020 18:19
; 我应该怎么做?我不知道如何解码标记值。
解决方案
您可以从TaggedValue
using获取值.-rep
,然后可以String
使用某个库解析该值。
例如,您可以使用cljc.java-time解析日期,如下所示:
(let [tv (t/tagged-value "LocalDateTime" "2019-01-01T11:22:33.123")]
(cljc.java-time.local-date-time/parse (.-rep tv))) => #object[LocalDateTime 2019-01-01T11:22:33.123]
或者你可以使用Tick;那么你的代码看起来像,
(ns xx.yy.zz
(:require ..
[tick.locale-en-us]
[tick.alpha.api :as t]
..
))
...
(defn message-list [messages]
...
[:li
[:time (t/format (t/formatter "dd/MM/yyyy HH:mm") (t/parse (.-rep timestamp)))]
...]
...)
...
推荐阅读
- git - Git:在没有 SSH 密钥的情况下暂时记住 SSH 用户和密码
- kubernetes - 对 Kubernetes 资源的独特访问
- php - 现在需要通过 http “可用”的 Laravel 命令
- delphi - Fastreport 超链接外部 URL
- python - xhtml2pdf python库中的自动打印选项
- mvvm - 使用 Prism Xamarin 表单创建动态 TabbedPage
- reactjs - 这是在反应中使用功能组件中的道具时的正确方法
- spring - spring mongodb条件API:检查同一个嵌套元素上的两个值
- java - 使用其他 PC 时出现 SSL Validator 异常
- asp.net - 在 IIS 10 上的 aspx(Web 表单)中隐藏 ssi 指令,但在响应中呈现它