SimpleDateFormat会在真实手机上抛出异常,但在模拟器

时间:2016-02-29 23:24:45

标签: android android-emulator simpledateformat parseexception

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

  

周一,2016年2月29日22:31:00 GMT

  

2016-02-29 22:31:00

在我的Genymotion Google Nexus 5,三星Galaxy S5等设备中,它看起来很完美。当我在真实手机(不仅仅是一个)上运行此应用程序时,带有日期的TextView为空:getFormatPubDate抛出ParseException,其中包含" Unparseable date"在

 date = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(pubDate);

pubDate变量中的日期是正确的而不是null。

// 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。我使用HH格式(24小时),但时间不正确。例   来自模拟器 - 周一,2016年2月29日23:01:00 GMT格式化为2016-02-29   十八点01分00秒

1 个答案:

答案 0 :(得分:0)

 //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);