java.util.DateクラスのtoStringメソッドの文字列からjava.util.Dateオブジェクトを生成する

これまた通常あまり使うことはない気もするけど、ハマったので記録として残しておく。
java.util.DateクラスでtoStringメソッドを呼び出すと「Wed Apr 07 21:26:05 JST 2010」のような形式の文字列を表示する。こいつから逆にjava.util.Dateオブジェクトを生成するにはどうしたら良いのかとということで、あれこれ思考錯誤した。ポイントは、Locale.USを指定すること。こいつを指定しないとエラーになる。ここがハマッた所。

以下はLocale.USを指定した場合と、しなかった場合の比較。

user=> (import (java.util Date Locale))
java.util.Locale
user=> (import (java.text SimpleDateFormat))
java.text.SimpleDateFormat

user=> (defn parseStringDate
 [date-string]
 (let [format  (SimpleDateFormat. "EEE MMM dd hh:mm:ss zzz yyyy")]
   (.parse format date-string)))
#'user/parseStringDate
user=> (parseStringDate (.toString (Date.)))
java.text.ParseException: Unparseable date: "Wed Apr 07 21:33:59 JST 2010" (NO_SOURCE_FILE:0)

user=> (defn parseStringDate
 [date-string]
 (let [format  (SimpleDateFormat. "EEE MMM dd hh:mm:ss zzz yyyy" Locale/US)]
   (.parse format date-string)))
#'user/parseStringDate
user=> (parseStringDate (.toString (Date.)))
#<Date Wed Apr 07 21:34:24 JST 2010>