2024年Clojure调查!中分享您的想法。

欢迎!请查看关于页面,了解更多关于如何使用本网站的信息。

+1
ClojureScript

以下代码会导致异常

(cljs.reader/read-string (pr-str (new js/Date 200 5)))

 #error {:message "Unrecognized date/time syntax: 200-05-31T23:06:32.000-00:00",
         :data {:type :reader-exception},
         :cause #object[Error Error: Unrecognized date/time syntax: 200-05-31T23:06:32.000-00:00]}

请注意,JavaScript日期可以很好地处理公元200年。

还请注意,以下操作工作正常

(cljs.reader/read-string "#inst \"0200-05-31T23:06:32.000-00:00\"")

这表明正确的修复方法可能是使用normalize在https://github.com/clojure/clojurescript/blob/r1.10.773-2-g946348da/src/main/cljs/cljs/core.cljs#L10173将年份格式化为4位数字

2 答案

0

一行复制

clj -Srepro -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version "1.10.764"}}}' -m cljs.main -re node -e "(require '[clojure.edn :as edn]) (edn/read-string (pr-str (new js/Date 200 5)))"

在cljs中它打印

#inst "200-06-01T03:06:28.000-00:00"

然后读者无法读取它。

在JVM Clojure中

clj -Srepro -e "(require '[clojure.edn :as edn]) (edn/read-string (pr-str (doto (new java.util.Date) (.setYear -1700))))"

它打印#inst "0200-07-06T12:35:31.383-00:00",没有任何问题

0
...