从我的Android应用程序中获取日期格式为1994-09-11
的Web服务,我需要将其显示为Sep 11
我的代码如下
Date date_temp = null;
String d_temp = null;
DateFormat formatter;
static SimpleDateFormat datesdf = new SimpleDateFormat("yyyy MMM dd");
public String changeDateformat(String date_str)
{
Log.e("date_str ",""+date_str);
try
{
date_temp = (Date)formatter.parse(date_str);
Log.e("date_temp ",""+date_temp);
d_temp = null;
d_temp = datesdf.format(date_temp);
Log.e("d_temp ",""+d_temp);
}
catch (ParseException ex)
{
ex.printStackTrace();
}
catch (java.text.ParseException e)
{
e.printStackTrace();
}
return d_temp;
}
当调用上面的方法时,会打印第一个日志值(我从网上获取的值),然后我的应用程序崩溃说
09-10 13:02:44.920: E/AndroidRuntime(3503): java.lang.NullPointerException
09-10 13:02:44.920: E/AndroidRuntime(3503): at xxxxxxxxxxx(Events.java:206)
此处行号206是上述方法的try catch内的第一行。 我的代码出了什么问题,请建议我......
答案 0 :(得分:2)
DateFormat格式化程序; < - 它从未被初始化。所以你在null上调用一个方法。
也许你想用:
static SimpleDateFormat datesdf = new SimpleDateFormat("yyyy MMM dd");
而不是格式化程序。
答案 1 :(得分:2)
您可以使用字符串构建器 从网上获取日期后 试试这个
//无论你想在哪里设置,你可以设置如下:
enter code here
EditText aa;
aa.setText( new StringBuilder()
// Month is 0 based so add 1
.append(day).append("/")
.append(month + 1).append("/")
.append(year).append(" "));
答案 2 :(得分:0)
不像那样使用DateFormat。您声明格式化程序但从不初始化它。要格式化日期,您需要这样做,
d_temp = DateFormat.format("MMM dd", date_temp).toString();
您需要使用SimpleDateFormat将日期字符串转换为日期,并使用另一个SimpleDateFormat将日期格式设置为新字符串。试试这段代码,
public static Date strToDate(String format, String date) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
return sdf.parse(date);
} catch (ParseException e) {
return null;
}
}
public String changeDateformat(String date_str) {
Date t = strToDate("yyyy-MM-dd", date_str);
return DateFormat.format("MMM dd", t).toString();
}