unp*_*pix 4 android date exception
好吧,我正试图从rss中捕获日期,我在logcat中得到了这个execption:
E/AndroidNews( 870): Caused by: java.text.ParseException: Unparseable date: "Su
n, 02 Oct 2011 14:00:00 +0100"
E/AndroidNews( 870): at java.text.DateFormat.parse(DateFormat.java:626)
E/AndroidNews( 870): at com.warriorpoint.androidxmlsimple.Message.setDate(Mes
sage.java:57)
Run Code Online (Sandbox Code Playgroud)
我的格式化程序是
static SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm");'
我的方法setDate();
public void setDate(String date) {
this.date=null;
// pad the date if necessary
while (!date.endsWith("00")){
date += "0";
}
try {
this.date = FORMATTER.parse(date.trim());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
您使用的格式错误,对于"Sun,02 Oct 2011 14:00:00 +0100",请尝试以下方法:
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)
Run Code Online (Sandbox Code Playgroud)
这也强制语言环境为(美国)英语,因此日期和月份名称不受设备的语言环境影响,例如在葡萄牙语语言环境中期望"太阳报"为"Dom","Out"为"Out"(我偷看)在你的个人资料).
您在问题中的格式只能解析"2011-10-02 14:00"等日期.
另外,不要填充日期,让格式化程序进行解析.
如果您想以java.util.Date某种方式输出/显示a ,只需使用所需的格式化字符串创建一个新的SimpleDateFormat(让我们称之为displayFmt)并调用format()它:
String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);
Run Code Online (Sandbox Code Playgroud)
这将为您提供今天的"02 10 2011 17",格式为用户/设备的首选区域设置.
请注意,在你的评论中,你说dd mm yyyy h(小写m和h)会给你"dayOfMonth 分钟年份12" - 我认为这不是你想要的,所以我把它改成大写M和大H写给你"dayOfMonth 月年hours24 ".
| 归档时间: |
|
| 查看次数: |
6282 次 |
| 最近记录: |