Clojure clj-time :解析本地字符串



我在java.util.Date和clj-time之间进行互操作时遇到了麻烦。

我有第一个原始数据,它是java.util.Date的实例,让我们一天:

(def date (new java.util.util.Date))

我想变成一个clj时间对象,所以我这样做:

(def st-date (.toString date))

输出:

"Mon Mar 21 16:39:23 CET 2016"

我定义格式化程序

(def date-formatter (tif/formatter "EEE MMM dd HH:mm:ss zzz yyyy"))

我想一切都在这里。

我这么努力

(tif/parse order-date-formatter st-date)

我有一个例外,告诉我格式不正确。

我试过了

(tif/unparse order-date-formatter (tic/now))

我有

"lun. mars 21 15:50:29 UTC 2016"

这与java字符串的日期时间相同,但使用法语(我的语言)和UTC

包装用于测试的代码

(defn today-date-to-clj []
  (let [st-date (.toString (new java.util.util.Date))
        date-formatter (tif/formatter "EEE MMM dd HH:mm:ss zzz yyyy")]
    (tif/parse date-formatter st-date)))

我似乎格式化程序不适用于字符串,因为它的本地化不同,对吗?如何更改它?

感谢您的帮助!

编辑

有人给了我一个更好的答案,但这几乎适用于好奇的人("CET 2016"的问题,但适用于未解析)

(def uni-formatter (tif/with-locale (tif/with-zone order-date-formatter (DateTimeZone/forID "Europe/Paris")) java.util.Locale/US))
不应使用

String 作为中间日期表示形式,而应使用直接转换:

(clj-time.coerce/from-date (java.util.Date.))

仔细看看clj-time的强制函数。

您可以将java.util.Date对象传递给from-datefrom-date-time以获取org.joda.time.DateTime,然后将其应用于自定义格式化程序:

(require '[clj-time
           [coerce :as c]
           [format :as f]])
(->> (java.util.Date.)
     (c/to-date-time)
     (f/unparse date-formatter))

相关内容

  • 没有找到相关文章

最新更新