Skip to content

Commit 3521ee5

Browse files
authored
Merge pull request #60 from robdaemon/handle-locales-for-formatters
Clojureifying names breaks under exotic locales
2 parents cc50f80 + c7e9711 commit 3521ee5

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/java_time/format.clj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
[java-time.core :as jt.c]
55
[java-time.util :as jt.u])
66
(:import [java.time.temporal TemporalAccessor]
7-
[java.time.format DateTimeFormatter DateTimeFormatterBuilder ResolverStyle]))
7+
[java.time.format DateTimeFormatter DateTimeFormatterBuilder ResolverStyle]
8+
java.util.Locale))
89

910
(def predefined-formatters
1011
(->> (jt.u/get-static-fields-of-type DateTimeFormatter DateTimeFormatter)
1112
(jt.u/map-kv
12-
(fn [^String n fmt]
13-
[(string/lower-case (.replace n \_ \-)) fmt]))))
13+
(fn [^String n fmt]
14+
[(.. (.replace n \_ \-) toString (toLowerCase (Locale/US))) fmt]))))
1415

1516
(defn- get-resolver-style [s]
1617
(if (instance? ResolverStyle s) s

test/java_time_test.clj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
(ns java-time-test
22
(:require [clojure.test :refer :all]
33
[java-time.util :as jt.u]
4-
[java-time :as j]))
4+
[java-time :as j])
5+
(:import java.util.Locale))
56

67
(def clock (j/fixed-clock "2015-11-26T10:20:30.000000040Z" "UTC"))
78

@@ -846,3 +847,14 @@
846847
(is (= (j/offset-time joda-clock)
847848
(j/offset-time (DateTime. 2015 11 26 10 20 30 40 (DateTimeZone/forID "UTC"))))))))
848849

850+
(deftest locale-test
851+
(let [current-locale (Locale/getDefault)
852+
test-langs ["en" "tr" "cn"]]
853+
(testing "locale specific rules for lower-case can cause formatters to not be found"
854+
(doseq [lang test-langs]
855+
(testing lang
856+
(try
857+
(Locale/setDefault (Locale/forLanguageTag lang))
858+
(is (some? (j/formatter :rfc-1123-date-time)))
859+
(finally
860+
(Locale/setDefault current-locale))))))))

0 commit comments

Comments
 (0)