2016-03-21 119 views
0

我无法在java.util.Date和clj-time之间进行互操作。Clojure 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”的问题,但工程unparse)相反

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

回答

1

仔细查看clj-time的coerce函数。

你可以通过你的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)) 
+0

Thnaks也为答案! –