首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

时间格式化 为什么空指针错误

2012-04-10 
时间格式化 为什么空指针异常?private String jcongtime//set getSimpleDateFormat sdf new SimpleDate

时间格式化 为什么空指针异常?
private String jcongtime;
//set get

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

jcongtime=sdf.format(pi.getJiagongtime());

pi是一个对象。jiagongtime是其字段 是Java.util.Date类型

我在jsp页面 是要回显日期的:
之前是这样写的:(没有用自己定义的jcongtime这个字段)
 <input type="text" name="pi.jiagongtime" value="${pi.jiagongtime}"
但是这样做 选择日期后 回显的不是 2012-04-11这种格式 而是 一串英文的格式
所有我想把起转为字符串所有用了SimpleDateFormat 然后赋给我的自己定义的jcongtime这个字段
在页面:<input type="text" name="pi.jiagongtime" value="${jcongtime}"
现问题来了:
  但选择了日期 即pi.getJiagongtime()!=null 一切正常 可以回显
但是当pi.getJiagongtime()==null 时报空指针异常 是jcongtime=sdf.format(pi.getJiagongtime());这行报的错误
我能确定pi对象不是空的(因为没选择日期那么选择了其他字段)所以不是pi.getJiagongtime());这个方法报的 求解释

[解决办法]
虽然pi对象不是空的,但是pi.getJiagongtime()有可能为空的啊。

要是pi.getJiagongtime()==null就好比下面的代码,当然报空指针异常了。

Java code
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        sdf.format(null);
[解决办法]
看看源代码你就很清楚了,format会调用到SimpleDateFormat的方法
Java code
public StringBuffer format(Date date, StringBuffer toAppendTo,                               FieldPosition pos)    {        pos.beginIndex = pos.endIndex = 0;        return format(date, toAppendTo, pos.getFieldDelegate());    } 

热点排行