次のようなコードがあります。
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() メソッドによると同等ではありません
ただし、私のテスト スイートは、これらの datetime インスタンスが含まれるクラスに対して beEquals 操作を使用してディープ マッチングを使用するため、.equals() が true を返すようにそれらを正規化する方法が必要です。
どうすればそれらを正規化できますか?