我有一个实体Date属性:
@Temporal(TemporalType.TIMESTAMP)
private Date paymentDate;
我要转换为String。使用以下代码,我收到无法将给定对象格式化为日期例外:
Format df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String pDate = df.format(item.getPaymentDate());
哪里错了?
答案 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.Date
或java.lang.Number
。