java.util.Date.toString()打印出错误的格式

时间:2012-11-27 23:03:02

标签: java date tostring

以下代码打印出“vmtDataOrig.creationdate = 2012-11-03”

VmtData vmtDataOrig = VmtDataDao.getInstance().loadVmt(1);
System.out.println("vmtDataOrig.creationdate=" + vmtDataOrig.getCreationDate().toString());

以下是VmtData类中creationDate字段的定义:

private Date creationDate = null;

这是creationDate字段到数据库表列的hibernate映射:

<property name="creationDate" column="CREATIONDATE" type="date"/>

MySQL数据库表中的CREATIONDATE列的类型为“date”,对于检索到的记录,它的值为“2012-11-03”。

java.util.Date.toString()方法的Javadoc说它应该以“dow mon dd hh:mm:ss zzz yyyy”的形式打印Date对象。任何人都知道它为什么以“yyyy-MM-dd”的形式打印出来?

2 个答案:

答案 0 :(得分:3)

即使该字段属于java.util.Date类型,Hibernate仍然可以使用java.sql.Date填充,其子类java.util.Date并覆盖{{1}例如:

toString()

虽然很容易检查:

public class Test {
    public static void main(String[] args) throws Exception {
        java.util.Date date = new java.sql.Date(0);
        System.out.println(date); // 1970-01-01
    }
}

答案 1 :(得分:0)

你的hibernate类型是日期,因此使用了java.sql.Date(它是java.util.date的子类)。如果将hibernate类型更改为java.sql.Timestamp,它将使用其toString()实现。