2016-03-21 4 views
0

У меня возникли проблемы с переходом между java.util.Date и clj-time.Clojure clj-time: parse local string

У меня есть первые необработанные данные, который является экземпляром 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 String, но на французском языке (мой язык) с 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))) 

Кажется, что форматирование не работает на строку, потому что это не та же локализация, правильно? Как его изменить?

Спасибо за помощь!

EDIT

Кто-то дал мне гораздо лучше ответить, но это почти работал для любопытных людей (проблема в «СЕТ-2016», но работает для unparse)

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

ответ

1

Вместо того, чтобы использовать String как промежуточное представление даты следует использовать прямое преобразование:

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

+0

ахи спасибо Я искал сложный ответ, не видел его! –

1

Ознакомьтесь с функциями 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)) 
+0

Thnaks тоже за ответ! –