ひでっぷの技術メモ

はてなダイアリーから移行しました

SimpleDateFormatクラスparseメソッドのLocaleに注意

SimpleDateFormatクラスのJavaDocに以下の例が書いてあります。



次の例に、U.S. ロケールで日付/時刻パターンがどのように解釈されるかを示します。指定された日付と時刻は U.S. Pacific Time タイムゾーンのローカルタイム 2001 年 7 月 4 日 12 時 8 分 56 秒です。

"EEE, MMM d, ''yy" → Wed, Jul 4, '01

これを見たので自分のプログラム内で"2008 Sep 1 12:34:56"をparseしようと以下のようにnewしましたがParseExceptionが出てしまいます。

SimpleDateFromat format = new SimpleDateFormat("yyyy MMM d HH:mm:ss")

かなり悩みました・・・・色々調べた結果、これで無事parseすることができました。

SimpleDateFromat format = new SimpleDateFormat("yyyy MMM d HH:mm:ss" , Locale.US)

確かにSepって英語ですね・・・。Locale.JAPANESE(デフォルト)だったからだめだったってことのようです。
ちなみに"2008 9月 1 12:34:56"はparseできるみたい。
ここまで作りこんでるJavaってある意味すごいですね。