实体日期属性:无法将给定对象格式化为日期

时间:2014-01-02 16:11:21

标签: java type-conversion

我有一个实体Date属性:

@Temporal(TemporalType.TIMESTAMP)
private Date paymentDate;

我要转换为String。使用以下代码,我收到无法将给定对象格式化为日期例外:

Format df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String pDate = df.format(item.getPaymentDate());

哪里错了?

1 个答案:

答案 0 :(得分:1)

Format#format(Object)方法委托给子类型的format(Object, StringBuffer, FieldPosition)方法。 DateFormat继承的SimpleDateFormat实现如下

public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
{
    if (obj instanceof Date)
        return format( (Date)obj, toAppendTo, fieldPosition );
    else if (obj instanceof Number)
        return format( new Date(((Number)obj).longValue()), toAppendTo, fieldPosition );
    else
        throw new IllegalArgumentException("Cannot format given Object as a Date");
}

换句话说,item.getPaymentDate()返回的值必须为null或者不是java.util.Datejava.lang.Number