【问题标题】:Storing java util date into mysql as a timestamp将java util日期作为时间戳存储到mysql中
【发布时间】:2013-06-20 14:10:35
【问题描述】:

我正在使用 JPA 和 MySQl

在我的域对象中,我有一个日期字段

@Temporal(TemporalType.TIMESTAMP)
private Date lastSeenDate;

在我的 UI 中,日期以 dd-mm-yyyy 格式的字符串形式显示

我用过

final DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
final Date date = format.parse(dateString);

但对于字符串日期

06-06-2013

mysql中存储的日期是

0011-12-04 00:00:00.0

如何将其存储到mysql中以匹配mysql格式

【问题讨论】:

  • 使用format.format(date);
  • 请说明你得到什么样的约会以及你想要得到什么
  • “带有时间戳”是什么意思?我怀疑您误解了 java.util.Date 的含义。
  • 你的问题很模糊。最好显示所有相关代码,显示输入、实际输出和预期输出...
  • 你的 dateString 到底是什么?

标签: java date simpledateformat


【解决方案1】:

Date 类表示特定的时间瞬间,以毫秒为单位 精度。

发件人:http://docs.oracle.com/javase/6/docs/api/java/util/Date.html

日期类总是有一个时间组件。

【讨论】:

    【解决方案2】:

    Java 中的所有日期本质上都是时间戳,因为它们代表一毫秒的时间。

    我想不出只处理日期的方法,但您可能想看看java.util.Calendar。如果您可以将小时、分钟、秒和毫秒都设置为零(或其他定义的时间),那么您可以更自然地处理天、月和年。这不是一个很好的产品,但效果很好。

    【讨论】:

      【解决方案3】:

      根据 JavaDocs:java.util.Date 分配一个 Date 对象并对其进行初始化,以便它表示分配它的时间,精确到毫秒.

      所以,它就像一个数据库时间戳。它总是有一个时间分量,尽管它可能是代表午夜的全零。但是,您可以使用相同的SimpleDateFormat 打印出不带时间组件的java.util.Date

      final DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      final Date utilDate = sdf.parse("2013-06-20");
      System.out.println(sdf.format(utilDate)); // prints back 2013-06-20
      

      或者,您可能想查看没有时间组件的java.sql.Date

      java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 2011-03-29
        • 2011-01-24
        • 2016-01-07
        • 2013-08-10
        • 2013-05-03
        • 2023-03-24
        相关资源
        最近更新 更多