This is my Clojurescript function,
(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 is printing,
#<Atom: [{:id 1, :name Adeel Ansari, :message Hello, from the other side.,
:timestamp #object[Transit$TaggedValue [TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]]}]>
and stmt#2 is printing,
[TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]
Now, I would like to print it as, say, 13/01/2020 18:19; how should I go about it? I've no idea how to decode tagged-values.
You can obtain the value from the TaggedValue using .-rep, and then, you can parse that String using some library.
For example you can parse the date, using cljc.java-time, like this:
(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]
Or you can use Tick; then your code would look something like,
(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)))]
...]
...)
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With