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]}

请注意,JS 日期可以正确处理 2000 年。

另外,以下代码运行正常

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

这表明正确的修复可能是在https://github.com/clojure/clojurescript/blob/r1.10.773-2-g946348da/src/main/cljs/cljs/core.cljs#L10173 使用 normalize 格式化年份为 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 投票
...