我有一个代码,我使用SimpleDateFormat
:
String data = jTData.getText();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dataInserir = null;
dataInserir = formatter.parse(data);
System.out.println(dataInserir);
如果jTData.getText()
中的字符串为“2010-10-10”,则此代码的输出为:
Sun Oct 10 00:00:00 BRT 2010.
但是,它在数据库中插入了值2010-10-10。
该字段是:
@Temporal(javax.persistence.TemporalType.DATE)
private Date data;
我错过了什么,我无法获得2010-10-10
作为Date
的输出?
如果输出为2010-10-10
,为什么插入值Sun Oct 10 00:00:00 BRT 2010
?
任何帮助我都会感激不尽,谢谢。
答案 0 :(得分:0)
我怀疑你混淆了java.util.Date
班级与java.sql.Date
的性质。第一个是日期和时间,第二个是仅限日期。
您已将注释标记为javax.persistence.TemporalType.DATE
。该枚举的文档简单地说:
映射为java.sql.Date
您说要存储仅限日期。
所以你遇到的是一个功能,而不是一个bug。
如果要存储包含时间的日期,请使用javax.persistence.TemporalType.TIMESTAMP注释。
在数据库中的列上添加时间戳类型(应该几乎总是带时间戳的时区类型)。
另外,我建议使用java.time框架而不是麻烦的java.util.Date和SimpleDateFormat类。但这是另一个话题。