Jodaタイムライブラリを使用して日付をフォーマットしようとしていますが、実行するデバイスによって動作が異なるという問題があります。これは私のコードです:
public static String parseDate (String date)
{
final String datePattern = "yyyy-MM-dd, ";
final String hourPattern = "HH:mm";
DateTimeParser[] parsers = {
DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss Z").getParser(),
DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss ZZZ").getParser(),
DateTimeFormat.forPattern("yyy-MM-dd'T'HH:mm:ss.SSSZ").getParser()};
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append( null, parsers).toFormatter();
String daux = "";
try
{
DateTime dt = formatter.parseDateTime(date);
String pubDate = dt.toString(datePattern);
String pubHour = dt.toString(hourPattern);
daux = pubDate + "kl " + pubHour;
}
catch (Exception e)
{
e.printStackTrace();
}
return daux;
}
日付「2012年4月24日火曜日11:06:19GMT」は、Nexus 4で正しくフォーマットされていますが、SamsungGS2で実行すると例外が発生します。私はそれが何であるかを本当に知りません。
例外は次のとおりです。
01-22 15:21:05.160: W/System.err(11718): java.lang.IllegalArgumentException: Invalid format: "Sun, 20 Jan 2013 23:27:00 GMT"
01-22 15:21:05.160: W/System.err(11718): at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)
01-22 15:21:05.160: W/System.err(11718): at com.fotbollskanalen.parser.DateParser.parseDate(DateParser.java:150)
何か案は?