我们如何将 com.datastax.driver.core.LocalDate 转换为 java.util.Date?

How can we convert com.datastax.driver.core.LocalDate to java.util.Date?

我正在处理日期。

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

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

LocalDate.getMillisSinceEpoch() Javadoc says Returns the number of milliseconds since January 1st, 1970 GMT. And, the Date(long) 构造函数 Javadoc 说 分配一个 Date 对象并将其初始化以表示自称为 "the epoch" 的标准基准时间以来指定的毫秒数,即 1970 年 1 月 1 日,00:00:00 GMT。 所以,给定一个 LocalDate ld 你应该能够做类似

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

正如其他答案提到的那样,您可以使用

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

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

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

我个人使用 row.getTimestamp 而不是 row.getDate,其中 returns 日期对象本身。

Date d = row.getTimestamp();

您可以按照以下步骤,将 datastax LocalDate 转换为 Date:

  1. 使用来自 datastax LocalDate 的年月日创建 LocateDate
    datstax.Localdate dt = 一些值
    java.time.LocalDate ld = java.time.LocalDate.of(dt.getYear(), dt.getMonth(), dt.getDay())
  2. 在 LocalDate 上面的格式然后你会得到字符串类型的日期
    字符串 dtt = ld.format(DateTimeFormater.ofPattern("dd/MM/yyyy"))
  3. 然后使用 SimpleDateFormat
    进行转换 日期 tt = new SimpleDateFormat("dd/MM/yyyy").parse(dtt)

尽情享受吧:)