【发布时间】:2018-06-30 23:46:22
【问题描述】:
我有代码,类似这样:
import java.time._
object app {
def main (args :Array[String]) = {
println("app started")
// create two ZonedDateTime objects for 1st Jan 2018, 10am UTC
// using separate methods
val zdt1 = ZonedDateTime.of(2018, 1, 1, 10, 0, 0, 0, ZoneId.of("UTC"))
val zdt2 = ZonedDateTime.parse("2018-01-01T10:00:00Z")
println(s"COMPARING: $zdt1 and $zdt2")
println("== check: " + (zdt1 == zdt2))
println(".equals check: " + (zdt1.equals(zdt2)))
println(".isEqual check " + (zdt1.isEqual(zdt2)))
println("app finished")
}
}
此处提供代码:https://ideone.com/43zf8B
问题:
- 这些都是类型化的 ZonedDateTime 对象
- 根据 .isEqual() 方法,它们是等价的。
- 根据 .equals() 方法,它们不等价
但是,我的测试套件使用 beEquals 进行深度匹配 针对这些日期时间实例的类的操作 因此,我需要一种方法来规范它们,以便 .equals() 返回 true。
请问我怎样才能使它们正常化?
【问题讨论】:
-
Epoch-nanos 或 Epoch-millis。
-
你用的是什么测试库?
-
提示:
zdt.toInstant() -
我只是重构了测试套件以使用一致的方法构造 ZonedDateTimes,因为这比尝试操作深层嵌套实例的工作量要少。
标签: java scala zoneddatetime