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: 日付関連
コメントを残す