2016-03-21 53 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也爲答案! –