我有一个使用 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
,我错过了什么?
如果输出是 Sun Oct 10 00:00:00 BRT 2010
,为什么要插入值 2010-10-10
?
任何帮助我将不胜感激,谢谢。
最佳答案
我怀疑您混淆了 java.util.Date
的性质类与 java.sql.Date
。第一个是日期和时间,第二个是仅日期。
您将注释标记为 javax.persistence.TemporalType.DATE
。该枚举的文档简单地说:
Map as java.sql.Date
您说过仅存储日期。
所以您遇到的是一个功能,而不是一个错误。
如果您想存储日期和时间,请使用 javax.persistence.TemporalType.TIMESTAMP注解。
在数据库的列上使用时间戳类型来支持它(几乎应该始终是带有时区的时间戳类型)。
此外,我建议使用 java.time框架而不是麻烦的 java.util.Date 和 SimpleDateFormat 类。但这完全是另一个话题了。
关于java - SimpleDateFormat 返回 "Sun Oct 10 00:00:00 BRT 2010"但插入 "2010-10-10",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346512/