1
我想用Joda時間庫格式化一個日期,但我的問題是它的行爲有所不同,具體取決於它在哪個設備上執行。這是我的代碼:Joda DateTimeFormat在幾種設備中表現不同(Android)
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分19秒格林尼治標準時間」,它的格式是正確的的Nexus 4,但是當在三星GS2執行時引發一個例外。我真的不知道它會是什麼。
唯一的例外是:
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)
任何想法?
的事情是,它是從一個Web服務中檢索到的日期,以便該區域應該用嗎? – Jatago
@Jatago取決於Web服務使用的語言環境來格式化日期。從你提供的樣本日期看來,它似乎是'Locale.ENGLISH'。 – pingw33n
感謝您的快速響應,但我嘗試使用Locale.english,Locale.UK,Locale.US,並沒有一個幫助...我不明白的一件事是爲什麼它依賴於設備? – Jatago