2012年6月12日

【Android】SimpleDateFormatの使い方(ParseException)



今回は自分が良くAndroid開発で間違えて、
このエラーなんだっけなぁと毎回忘れる部分のメモです。

java.text.ParseException: Unparseable date:

こんなエラーが出る場合の対処法です。


JavaでDateとStringの相互変換はSimpleDateFormatを利用すると思うのですが、
普通にSimpeDateFormatを使うと、こんなコードになります。

String date = "Sun, 10 Jun 2012 15:16:03 +0900";
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
df.parse(date);

ちなみに、これは特定の条件下でエラーになります。
何かと言うと、Android端末のLocaleがJAPANになっていると、
"Sun"の時点でパースエラーが起きて読み込めません。
日本語の状態でEEEは日〜土の漢字の曜日で読み込もうとします。

なので、

String date = "Sun, 10 Jun 2012 15:16:03 +0900";
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
df.parse(date);

と、SimpleDateFormatにLocaleを指定するとうまく読み込んでくれます。

今回は自分の良くする間違いをメモ程度に残しておきました。
ParseExceptionが出る方は参考にどうぞ。