【问题标题】:convert Java.util.Date to com.datastax.driver.core.LocalDate error将 Java.util.Date 转换为 com.datastax.driver.core.LocalDate 错误
【发布时间】:2018-01-05 12:08:27
【问题描述】:

使用时出现错误:

protected LocalDate getLocalDate( Date date ) {
    if ( date != null ) {
        return LocalDate.fromMillisSinceEpoch( date.getTime());
    }
    return null;
}

如果我的 java.util.Date 是 2017 年 9 月 30 日,则它会被转换并存储在 Cassandra 表中,为 2017 年 9 月 29 日 然而 当我使用

将 LocalDate 转换为 java.util.Date
Date interestOnlyEndDate  = 
    new Date(row.getDate("interest_only_end_date").getMillisSinceEpoch());

从数据库中检索行对象的位置,正确创建日期 截至 2017 年 9 月 29 日

【问题讨论】:

  • 在存储到数据库之前转换为毫秒的机器的时区和转换回日期的机器的时区是否相同?
  • 谢谢,我不知道如何检查,但我会看看。目前所有代码都在一台机器上运行,用于开发目的
  • 嗨,我 Mac 上的 TimeZone 设置为 BST,所以我在用户配置文件中设置:TZ=BST,然后重新启动 Cassandra 和 Tomcat,但仍然遇到同样的问题

标签: java datastax


【解决方案1】:

我正在运行 Tomcat 7.0.57、Cassandra 3.10 和 Datastax 驱动程序 3.1.4 我的 Mac 上的默认时区设置为 BST,所以我尝试在我的个人资料中设置 TZ=GMT,但 Cassandra 和 Tomcat 都忽略了这一点,所以我添加了:

-Duser.timezone=GMT

到 catalina.sh 中的 JAVA_OPTS 定义,它运行良好。

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2015-12-23
    • 2014-02-10
    • 2011-08-29
    • 2019-08-03
    • 2019-07-22
    • 2016-02-14
    相关资源
    最近更新 更多