首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析异常,不可解析日期

解析异常,不可解析日期
EN

Stack Overflow用户
提问于 2014-09-17 12:20:03
回答 3查看 473关注 0票数 1

每次在我的nexus 5智能手机上执行我的应用程序时,我都希望得到这个异常,但是当我在我的平板电脑附件7上测试它时,它不会发生,为什么呢?这是一堂课:

代码语言:javascript
复制
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中得到的:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-17 12:29:18

如果您解析的日期时间字符串总是以英语表示,则使用Locale.US而不是Locale.getDefault()与您的SimpleDateFormat一起将它们解析为美式英语,而不是设备当前的设置(如意大利语)。

票数 1
EN

Stack Overflow用户

发布于 2014-09-17 12:29:19

问题是,我的输入日期格式是英文的,而我的连词5是意大利语。因此,我的defalut地区会启动en异常。我就是这样解决的,多亏了黑带和拉尔托的帮助。

代码语言:javascript
复制
private SimpleDateFormat  dataOutFormato =
        new SimpleDateFormat("EEE dd/MM/yy HH:mm ", Locale.ITALIAN);
private SimpleDateFormat dataInFormato =
        new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
public String getTitolo() {
    return titolo;
}
票数 1
EN

Stack Overflow用户

发布于 2014-09-17 12:33:23

这与您的问题完全无关,但是用英文编写everything是一个很好的实践:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25890419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档