将 2014 年 12 月 9 日星期二 00:00:00 GMT+04:00 转换为 yyyy-MM-dd android

Convert Tue Dec 09 00:00:00 GMT+04:00 2014 to yyyy-MM-dd android

下面的代码产生 error Caused by: java.lang.NullPointerExceptionjava.util.Calendar.setTime。这是正确的转换方式吗 "Tue Dec 09 00:00:00 GMT+04:00 2014"yyyy-MM-dd android 使用 simpledateformat

SimpleDateFormat parseFormat = 
            new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

    Date date = null;

    try {

        date = parseFormat.parse(dateString);

        System.out.println("Cresult_pass: "+date.toString());
        SimpleDateFormat cformat = new SimpleDateFormat("yyyy-MM-dd");
        String result = cformat.format(date);
        System.out.println("Cresult:result "+result);

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

日志:

03-06 12:11:11.420: W/System.err(9478): java.text.ParseException: Unparseable date: "Tue Dec 09 00:00:00 GMT+04:00 2014" (at offset 0)
03-06 12:11:11.455: W/System.err(9478):     at java.text.DateFormat.parse(DateFormat.java:555)
03-06 12:11:11.455: W/System.err(9478):     at trail.kreol.view.PalmaresFragment.revertDate(FicheCoursePalmaresFragment.java:296)
03-06 12:11:11.455: W/System.err(9478):     at trail.kreol.view.PalmaresFragment.filteredList(FicheCoursePalmaresFragment.java:230)
03-06 12:11:11.455: W/System.err(9478):     at trail.kreol.view.PalmaresFragment.onCreateView(FicheCoursePalmaresFragment.java:137)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
03-06 12:11:11.455: W/System.err(9478):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
03-06 12:11:11.455: W/System.err(9478):     at android.view.View.measure(View.java:16831)
03-06 12:11:11.455: W/System.err(9478):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
03-06 12:11:11.455: W/System.err(9478):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
03-06 12:11:11.455: W/System.err(9478):     at android.view.View.measure(View.java:16831)

我暂时无法测试,但是你忘记了你的时区之后的时间。您将您的 SimpleDateFormat 设置如下:

SimpleDateFormat parseFormat = 
        new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

并尝试解析日期:

Tue Dec 09 00:00:00 GMT+04:00 2014

所以我想,您只是忘记了时间。将 parseFormat 的格式字符串更改为:

SimpleDateFormat parseFormat = 
        new SimpleDateFormat("EEE MMM dd HH:mm:ss z HH:mm yyyy"); //put HH:mm into the format

因此,如果它没有解决问题,请播放一下,因为字符串可能与我的示例略有不同。但明确地说,您忘记了时区之后的时间。 另一种可能的解决方案,您必须在日期格式中使用 4 个大写字母 Z:

     SimpleDateFormat parseFormat = 
        new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy"); 

SimpleDateFormat 默认使用默认语言环境来解析工作日(或月份、时代、am/pm)。

使用

SimpleDateFormat parseFormat = 
    new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

如果您想应用特定的语言环境。