Search code examples
dateclojureclj-time

Determine the date format by locale with clj-time


I have been searching for this for quite a while now through Google and I couldn't find an ultimate solution with clj-time. I want to format a date automatically by the locale, like in this example or here. How would I do this using clj-time?

Thanks & Cheers


Solution

  • Use 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-

    Example of usage of joda-time 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"