我想将 strSqliteDate﹕ = 2016-01-14 05:34:50 PM 转换为 2016-01-14 。转换所有日期后,我的应用程序崩溃并出现错误
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1035)
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:577)
在这一行 date = dateFormat.parse(strSqliteDate);
第二次出现错误 line = calendar.setTime(date);
原因:java.lang.NullPointerException:尝试在 java.util.Calendar.setTime(Calendar.java:1195) 的空对象引用上调用虚方法“long java.util.Date.getTime()”
这是 DBhelper 类中的日期转换代码
String strSqliteDate = cursor.getString(cursor.getColumnIndex("ActionDate"));
Log.e(" strSqliteDate "," = " + strSqliteDate);
String result = "";
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try
{
date = dateFormat.parse(strSqliteDate);
}
catch(Exception e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat printFormat = new SimpleDateFormat("yyyy-MM-dd");
result = printFormat.format(calendar.getTime());
Log.e("result = ","==========>"+result);
原文由 p. ld 发布,翻译遵循 CC BY-SA 4.0 许可协议
在使用变量 strSqliteDate 之前检查它是否为空?