【发布时间】:2018-06-21 14:22:34
【问题描述】:
在一个有点遗留的项目中,我们在 Spring 应用程序中使用了版本 2 的 cassandra 驱动程序。
这个版本,特别是BoundStatement 类公开了一个方法getDate,它返回一个java Date。我们都知道旧的 java 日期 api 非常糟糕,但是小心使用时它确实可以完成工作。
现在,出于某种需要,我们决定将 cassandra 驱动程序升级到 3.4 版。首先要注意的是,在这个版本中,相同的方法getDate 现在返回一个类型为LocalDate 的日期,datastax 团队实现了一个类来替代java 的类。文档中提到了这个类的有趣之处:
在 ISO 8601 中没有时间组件、没有时区的日期 日历。请注意,ISO 8601 与 Java中使用的默认公历:它使用预测公历 日历,意味着它无限期地回到过去 (没有公历变化);有一年 0. 这个班 实现这些差异,以便年/月/日字段匹配 正是 CQL 字符串文字中的那些。
所以基本上,这个类会截断time 信息。此更改导致基于日期比较的单元测试中的一些失败,并且需要进行一些测试修改。对我来说,这实际上似乎很奇怪,但我想 datastax 团队做出这样的选择一定有充分的理由。我很高兴听到对此了解更多的人的意见。
【问题讨论】:
标签: java spring date cassandra