Clojure clj-time:解析本地字符串
Clojure clj-time : parse local string
我在 java.util.Date 和 clj-time 之间进行互操作时遇到问题。
我有第一个原始数据,它是 java.util.Date 的一个实例,今天开始吧:
(def date (new java.util.util.Date))
我想变成一个 clj-time 对象,所以我这样做了:
(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" 的问题,但对 unparse 有效)
(def uni-formatter (tif/with-locale (tif/with-zone order-date-formatter (DateTimeZone/forID "Europe/Paris")) java.util.Locale/US))
不应使用 String
作为中间日期表示,而应使用直接转换:
仔细看看 clj-time 的 coerce 函数。
您可以将 java.util.Date
对象传递给 from-date
或 from-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))
我在 java.util.Date 和 clj-time 之间进行互操作时遇到问题。
我有第一个原始数据,它是 java.util.Date 的一个实例,今天开始吧:
(def date (new java.util.util.Date))
我想变成一个 clj-time 对象,所以我这样做了:
(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" 的问题,但对 unparse 有效)
(def uni-formatter (tif/with-locale (tif/with-zone order-date-formatter (DateTimeZone/forID "Europe/Paris")) java.util.Locale/US))
不应使用 String
作为中间日期表示,而应使用直接转换:
仔细看看 clj-time 的 coerce 函数。
您可以将 java.util.Date
对象传递给 from-date
或 from-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))