【问题标题】:How to convert LocalDate to SQL Date Java?如何将 LocalDate 转换为 SQL Date Java?
【发布时间】:2015-05-23 23:28:47
【问题描述】:

如何将 LocalDate 转换为 java.sql.Date

尝试:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));

这失败了(无法编译),我只能找到 Joda 时间的东西。

我正在使用 Java 8

【问题讨论】:

  • @assylias 链接问题的答案比这里给出的更好吗?另一个问题应作为此问题的副本关闭,反之亦然。
  • @SecondRikudo 副本显示了如何从 LocalDate 转换为 Date ,反之亦然,因此看起来更通用。

标签: java java-8 converter java-time sqldatetime


【解决方案1】:

答案很简单;

import java.sql.Date;
...
LocalDate locald = LocalDate.of(1967, 06, 22);
Date date = Date.valueOf(locald); // Magic happens here!
r.setDateOfBirth(date);

如果你想反过来转换它,你可以这样做:

Date date = r.getDate();
LocalDate localD = date.toLocalDate();

r 是您在 JOOQ 中使用的记录,.getDate() 是从记录中取出日期的方法;假设您有一个名为 date_of_birth 的日期列,那么您的 get 方法应称为 getDateOfBirth()

【讨论】:

【解决方案2】:

如果你想要当前日期:

Date date = Date.valueOf(LocalDate.now());

如果你想要一个具体的日期:

Date date = Date.valueOf(LocalDate.of(1967, 06, 22));

【讨论】:

  • 如果你想要当前时刻,如果你想要一个特定的日期,这可能会更快,当你处理某人的出生日期时,这可能根本不起作用。
  • 是的,就是插入当前日期,例如当你创建对象并想保留创建日期时。
  • 这很重要,因为最初的问题是关于创建一个特定的日期。这是所有复制粘贴的注释。如果您想“更快”地做到这一点,您可以使用Date date = Date.valueOf(LocalDate.of(1967, 06, 22)); 将正确答案连线。
【解决方案3】:

您是否尝试过使用 LocalDate 的 toDate() 方法?

如:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(date.toDate());

一般来说,最好指定如何失败,而不是仅仅说“失败”。

【讨论】:

  • 说实话,我只是发布问题来发布我的答案,以便您在google时可以找到它。我必须自己想办法,因为古德尔没有这个问题或答案。
  • 好吧,现在你有两个答案,越多越好。我不认为回答你自己的帖子有什么问题。
  • 我希望它将来能帮助到我的位置。
  • OP 写道“[…] 我能找到的只有 Joda 时间的东西。我正在取消 Java 8”。但是,您的答案只是更多 Joda 的东西,而不是 Java 8 的答案。
  • LocalDate.toDate() 仅存在于 Joda 版本的 LocalDate 中,不存在于标准库版本中。
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2019-02-21
  • 2015-11-07
  • 2022-01-02
  • 2022-01-07
  • 2021-09-18
  • 2020-04-10
  • 1970-01-01
相关资源
最近更新 更多