java.util.Date.toString()打印出错误的格式
以下代码打印出“vmtDataOrig.creationdate=2012-11-03” 以下是VmtData类中creationDate字段的定义:java.util.Date.toString()打印出错误的格式,java,date,tostring,Java,Date,Tostring,以下代码打印出“vmtDataOrig.creationdate=2012-11-03” 以下是VmtData类中creationDate字段的定义: private Date creationDate = null; 以下是creationDate字段到数据库表列的hibernate映射: <property name="creationDate" column="CREATIONDATE" type="date"/> MySQL数据库表中的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”的形式打印日期对象。任何人都知道为什么它会以“yyyy-MM-dd”的形式打印出来吗?即使字段的类型是
java.util.Date
,Hibernate很可能仍然会用java.sql.Date
填充它,它是java.util.Date
的子类,并覆盖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
}
}
不过,很容易检查:
System.out.println(vmtDataOrig.getCreationDate().getClass());
您的hibernate类型是date,因此使用java.sql.date(它是java.util.date的子类)。如果将hibernate类型更改为java.sql.Timestamp,它将使用其toString()实现 您确定这不是
java.sql.Date
?VmtData.java具有“import java.util.*”;它不从java导入任何内容。sql@pacoverflow由于冲突(导入了两个独立的Date
类),它将无法导入java.sql.Date
。这意味着在方法中返回的日期可能返回java.sql.Date
,但它将在方法中显式键入,如java.sql.Date=blah代码>。在导入类时,而不是使用import java.util.*时,请始终保持特定性代码>。通过这种方式,您可以确定您没有引用其他包中的类。请参阅,了解强制此转换的一种非常可怕的方式。但是,如果您的数据库仅存储日期,则无法获取有效数据,例如小时、分钟、秒。谢谢,这正是发生的情况。
System.out.println(vmtDataOrig.getCreationDate().getClass());