こものAndroidメモ

Androidアプリの開発メモブログ!!

SimpleDateFormatで例外が出る —

[問題]

SimpleDateFormatで日付の文字列をDate型に格納しようしたら、Unparseable dateの例外が出る。

[症状]

RSSを取得して、日付の文字列をDate型に格納するプログラムを書いていました。

text = "Sat, 16 Jun 2012 13:29:49 +0000";

Date date;
SimpleDateFormat format =
 new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

try {
 date = format.parse(text);
} catch (ParseException e) {
}

エミュレータでは正常に動作するのに、Android端末の実機で動かすと、

Unparseable date: “Sat, 16 Jun 2012 13:29:49 +0000”

というParseExceptionが発生します。

[原因]

ロケールが設定されていなかった。

SimpleDateFormat format =
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

というところに、java.util.Locale.ENGLISHを設定すると例外は発生しなくなりました。

↓↓↓

SimpleDateFormat format =
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",
        java.util.Locale.ENGLISH);

エミュレータは英語のロケールだったので、たまたま動いていたようです。
日本語のロケールだと、「Sat」などはパースできないみたいですね。



Categorised as: 日付関連



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です