【问题标题】:How can we convert com.datastax.driver.core.LocalDate to java.util.Date?我们如何将 com.datastax.driver.core.LocalDate 转换为 java.util.Date?
【发布时间】:2016-01-22 13:33:27
【问题描述】:

我正在处理日期。

Datastax 的 CQL cassandra API Row.getDate() 返回一个 com.datastax.driver.core.LocalDate

我想将 API 返回的 com.datastax.driver.core.LocalDate 对象转换为 java.util.Date。我该怎么做?

【问题讨论】:

  • 这个问题以及下面的答案对我非常有用。
  • @adapt-dev 一般来说,建议将问题标题设置为......一个问题。不是后面有不合语法问号的句子。虽然后者很常见并且被接受,但不建议专门编辑一个问题,使其语法错误,而以前它的语法很完美。

标签: java cassandra cql datastax cql3


【解决方案1】:

LocalDate.getMillisSinceEpoch() Javadoc 表示 返回自 1970 年 1 月 1 日 GMT 以来的毫秒数。 而且,Date(long) 构造函数 Javadoc 表示 分配一个 Date 对象并将其初始化为表示自称为“纪元”的标准基准时间以来的指定毫秒数,即 1970 年 1 月 1 日,格林威治标准时间 00:00:00。 因此,给定 LocalDate ld 你应该能够做类似的事情

Date d = new Date(ld.getMillisSinceEpoch());

【讨论】:

  • 成功了...谢谢...:) 还有 Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString());工作。
  • @Jayashree 另一件事 - API 中的 getDate() 调用用于返回 java.lang.Date。在 2.2 中进行了更改,但调用 getTimestamp() 将返回一个合法的 java Date 而不是这个 Datastax 的东西。
【解决方案2】:

正如另一个答案提到的,您可以使用

Date d = new Date(row.getDate().getMillisSinceEpoch());

或者你可以使用java.sql.Date.valueOf

Date d = java.sql.Date.valueOf(row.getDate().getString());

我个人不使用row.getDate,而是使用row.getTimestamp,它返回日期对象本身。

Date d = row.getTimestamp();

【讨论】:

    猜你喜欢
    • 2018-01-05
    • 2018-02-11
    • 2021-02-25
    • 2014-08-25
    • 1970-01-01
    • 2011-08-01
    • 2014-02-10
    • 2011-08-29
    • 2019-08-03
    相关资源
    最近更新 更多