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);
尝试格式化日期并将其放入 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);