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

4

我正在处理日期。

Datastax的CQL Cassandra API Row.getDate() 返回一个com.datastax.driver.core.LocalDate对象。

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


4
这个问题以及接下来的回答对我非常有帮助。 - Michal
通常建议问题标题应该是一个问题,而不是一个句子后面跟着一个不符合语法的问号。虽然后者很常见并被接受,但是特意编辑一个之前语法完美的问题,使其语法错误是不被推荐的。 - anon
3个回答

12

LocalDate.getMillisSinceEpoch() Javadoc指出:返回自1970年1月1日GMT以来的毫秒数。Date(long)构造函数Javadoc则表示: 分配一个Date对象并将其初始化为表示自称为“时代”的标准基础时间以来指定的毫秒数,即1970年1月1日00:00:00 GMT。因此,给定一个LocalDate ld,您应该能够执行以下操作:

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

它起作用了...谢谢... :) 同时,Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString()); 也起作用了。 - Jayashree
2
@Jayashree,还有一件事——API中的getDate()调用以前返回java.lang.Date。在2.2中进行了更改,但是调用getTimestamp()将返回一个合法的Java Date而不是Datastax的东西。 - adapt-dev

3
正如其他答案提到的,你可以使用以下任一种方式:

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

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

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

我个人喜欢使用 row.getTimestamp,它直接返回 Date 对象。

Date d = row.getTimestamp();


0

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

  1. 使用Datastax LocalDate中的年、月和日创建LocateDate
    datstax.Localdate dt = somevalue
    java.time.LocalDate ld = java.time.LocalDate.of(dt.getYear(), dt.getMonth(), dt.getDay())
  2. 格式化上述LocalDate,然后您将获得String类型的日期
    String dtt = ld.format(DateTimeFormater.ofPattern("dd/MM/yyyy"))
  3. 然后使用SimpleDateFormat进行转换
    Date tt = new SimpleDateFormat("dd/MM/yyyy").parse(dtt)

享受吧 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接