android - 解析异常,无法解析的日期

标签 android parsing date simpledateformat

我每次在我的 nexus 5 智能手机上执行我的应用程序时都会收到此异常,但当我在我的平板电脑 nexus 7 上测试它时却没有发生,这是为什么?这是类(class):

package com.example.unisannioavvisiv1;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


public class RSSItem 
{
    private String titolo = null;
    private String descrizione = null;
    private String link = null;
    private String dataPub = null;

    private SimpleDateFormat  dataOutFormato =
            new SimpleDateFormat("EEE dd/MM/yy HH:mm ", Locale.getDefault());
    private SimpleDateFormat dataInFormato =
            new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.getDefault());
    public String getTitolo() {
        return titolo;
    }

    public void setTitolo(String titolo) {
        this.titolo = titolo;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getDataPub() {
        return dataPub;
    }

    public void setDataPub(String dataPub) {
        this.dataPub = dataPub;
    }


    /*
     * Un funzione che converte la data di pubblicazione dalla modalita' lunga
     * in una piu' semplice da leggere per il lettore. Va bene per il formato anglosassone.
     */
    public String ottieniDataPubFormattata()
    {
        try
        {
            Date data = this.dataInFormato.parse(this.dataPub.trim());
            String dataPubFormattata =  this.dataOutFormato.format(data);
            return dataPubFormattata;

        }
        catch(ParseException e)
        {
            throw new RuntimeException(e);
        }
    }


}

这是应用程序执行时我在 logcat 中得到的内容:

09-17 14:13:10.325: D/dalvikvm(28669): GC_FOR_ALLOC freed 240K, 2% free 17032K/17304K, paused 16ms, total 16ms
09-17 14:13:10.505: D/Avvisi Unisannio_FileIO_downloadFile_OK(28669): File Exists!   /data/data/com.example.unisannioavvisiv1/files/avvisi_feed.xml
09-17 14:13:10.505: D/Unisannio Avvisi(28669): Feed scaricati
09-17 14:13:10.565: D/dalvikvm(28669): GC_FOR_ALLOC freed 302K, 2% free 17242K/17576K, paused 9ms, total 9ms
09-17 14:13:10.585: D/Unisannio Avvisi ASYNC TASK(28669): Feed letti
09-17 14:13:10.595: D/AndroidRuntime(28669): Shutting down VM
09-17 14:13:10.595: W/dalvikvm(28669): threadid=1: thread exiting with uncaught exception (group=0x415f2ba8)
09-17 14:13:10.595: E/AndroidRuntime(28669): FATAL EXCEPTION: main
09-17 14:13:10.595: E/AndroidRuntime(28669): Process: com.example.unisannioavvisiv1, PID: 28669
09-17 14:13:10.595: E/AndroidRuntime(28669): java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Wed, 17 Sep 2014 12:49:19 +0200" (at offset 0)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.example.unisannioavvisiv1.RSSItem.ottieniDataPubFormattata(RSSItem.java:68)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.example.unisannioavvisiv1.ElencoAvvisiActivity.aggiorna_e_visualizza(ElencoAvvisiActivity.java:134)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.example.unisannioavvisiv1.ElencoAvvisiActivity$ReadFeed.onPostExecute(ElencoAvvisiActivity.java:108)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.example.unisannioavvisiv1.ElencoAvvisiActivity$ReadFeed.onPostExecute(ElencoAvvisiActivity.java:1)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.os.AsyncTask.finish(AsyncTask.java:632)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.os.Looper.loop(Looper.java:136)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at android.app.ActivityThread.main(ActivityThread.java:5001)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at java.lang.reflect.Method.invokeNative(Native Method)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at java.lang.reflect.Method.invoke(Method.java:515)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at dalvik.system.NativeStart.main(Native Method)
09-17 14:13:10.595: E/AndroidRuntime(28669): Caused by: java.text.ParseException: Unparseable date: "Wed, 17 Sep 2014 12:49:19 +0200" (at offset 0)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at java.text.DateFormat.parse(DateFormat.java:555)
09-17 14:13:10.595: E/AndroidRuntime(28669):    at com.example.unisannioavvisiv1.RSSItem.ottieniDataPubFormattata(RSSItem.java:61)
09-17 14:13:10.595: E/AndroidRuntime(28669):    ... 14 more
09-17 14:13:12.035: I/Process(28669): Sending signal. PID: 28669 SIG: 9

最佳答案

如果您解析的日期时间字符串始终是英文,请使用 Locale.US 而不是 Locale.getDefault() 和您的 SimpleDateFormat s 将它们解析为美国英语而不是您设备的当前设置,例如意大利语。

关于android - 解析异常,无法解析的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25890419/

相关文章:

android - MutableLiveData 的 postValue 方法返回 null

android firebase 通知不导航到确切的页面

Java ExecutorService - 任务/可调用不取消/中断

c++ - setlocale 是线程安全函数吗?

excel - 我的德语 Excel 无法识别英语日期

java - 我如何知道上下文是 Activity 还是 IntentService?

parsing - 为 Specflow 配置cultureInfo

java - 我使用解析正确吗?

php - 关于 unix 时间戳

r - 如何在给定的任意年份中获得去年的相同工作日?