Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.Date.toString()打印出错误的格式_Java_Date_Tostring - Fatal编程技术网

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

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列的类型

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

以下是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”的形式打印日期对象。任何人都知道为什么它会以“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());