2014-09-08 12 views
3

Я искал это довольно долго сейчас через Google, и я не смог найти окончательное решение с clj-time. Я хочу автоматически форматировать дату по языку, например, в this example или here. Как мне это сделать, используя clj-time?Определите формат даты по языку с clj-time

Благодаря & Приветствия

ответ

4

Использование with-locale (http://clj-time.github.io/clj-time/doc/clj-time.format.html#var-with-locale)

(require '[clj-time.core :as time] '[clj-time.format :as fmt]) 
(import '[java.util Locale]) 

(def custom-formatter (fmt/formatters :rfc822)) 
(def ja-formatter (fmt/with-locale custom-formatter (Locale. "ja"))) 
(fmt/unparse ja-formatter (time/date-time 2010 10 3)) 
> "日, 03 10 2010 00:00:00 +0000" 

-UPDATE-

Пример использования Joda времени DateTimeFormat:

(require '[clj-time.core :as time] '[clj-time.format :as fmt]) 
(import '[java.util Locale]) 
(import '[org.joda.time.format DateTimeFormat]) 
(def custom-formatter (DateTimeFormat/longDate)) 
(def ja-formatter (fmt/with-locale custom-formatter (Locale. "ja"))) 
(fmt/unparse ja-formatter (time/date-time 2010 10 3)) 
"2010/10/03" 
(def us-formatter (fmt/with-locale custom-formatter (Locale. "us"))) 
(fmt/unparse us-formatter (time/date-time 2010 10 3)) 
"October 3, 2010" 
+0

Я попробовал это, и это работает с rfc822, но что, если я хочу формат «Понедельник, 29 октября 2014 года» и соответствующие формы в Корее, Китае, Германии и т. Д.? На данный момент я пошел с этим решением: ** (. Format (SimpleDateFormat/getDateInstance 0 (Locale/US) (t.coerce/date-clj-date-date)) ** - и дает мне правильно отформатированные даты для разных языков. – RaceCondition

+0

вы можете создать DateTimeFormat от Joda, поскольку clj-time - это оболочка вокруг joda-time. http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat. html – edbond

+0

Это выглядит хорошо! Спасибо за ответ! – RaceCondition