java - SimpleDateFormat 返回 "Sun Oct 10 00:00:00 BRT 2010"但插入 "2010-10-10"

标签 java mysql date simpledateformat

我有一个使用 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/

相关文章:

java - Google App Engine Java 未收到电子邮件

jquery - 访问我的排名以计算我的用户的平均值

c# - 将 System.DateTime 转换为 Javascript DateString

php - 电子邮件未发送 mdaemon 配置完成但邮件未发送通过且未收到错误 php 文件

r - 如何列出R中两个日期之间的所有月份

android - 在 Unix 中显示时间戳,在 Android Kotlin 中显示 UTC

java - 存储库中的 deleteAll() 随机导致 ConstraintViolationException

swing - Java Swing : Open source Gantt chart library

java - 将字符串添加到字符串数组的开头

mysql 插入自增 mul 键