SimpleDateFormat 在真实 phone 上抛出异常,但在模拟器上正常工作

SimpleDateFormat throws exception on a real phone but works correctly on an emulator

尝试格式化日期并将其放入 Android Studio 中的 TextView 来自

Mon, 29 Feb 2016 22:31:00 GMT

2016-02-29 22:31:00

在我的 Genymotion Google Nexus 5、Samsung Galaxy S5 等设备中,它看起来很完美。当我 运行 这个应用程序在一个真正的 phone(不仅仅是一个)带有日期的 TextView 上为空时:getFormatPubDate 在

上抛出带有 "Unparseable date" 的 ParseException
 date = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(pubDate);

pubDate 变量中的日期正确且不为空。

// strings.xml
    <string name="data_time_format">yyyy-MM-dd HH:mm:ss</string>

// someClass.java
    public String getFormatPubDate(String format){
                try {
                Date date = null;
                    date = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(pubDate);
                    return new SimpleDateFormat(format).format(date);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return pubDate;
            }

// someActivity.java    
viewHolder.timePublishedTextView.setText(cachedNews.getFormatPubDate(activity.getResources().getString(R.string.data_time_format)));

P.S. I use format with HH (24 hour) but time is not correct. Example from emulator - Mon, 29 Feb 2016 23:01:00 GMT formated to 2016-02-29 18:01:00

 //This is original date format
 String date = "Mon, 29 Feb 2016 22:31:00";

 SimpleDateFormat sdf = new SimpleDateFormat("EE, dd MMM yyyy HH:mm:ss",
            Locale.ENGLISH);

 //This is new date format
 SimpleDateFormat print = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 Date parsedDate = null;

 try 
 {
     parsedDate = sdf.parse(date);
 } catch (ParseException e) {
     e.printStackTrace();
 }

 String text = print.format(parsedDate);