date1
date2
年代が異なるため、ここでは等しくありません。
val formatter = ISODateTimeFormat.dateTimeNoMillis
val date1 = formatter.parseDateTime("2012-01-03T00:00:00Z")
val date2 = new DateTime(2012, 1, 3, 0, 0, DateTimeZone.UTC)
println(date1.getChronology) // ISOChronology[Europe/Bucharest]
println(date2.getChronology) // ISOChronology[UTC]
assert(date1 === date2) // fails
ここでは、それらは等しいです:
val formatter = ISODateTimeFormat.dateTimeNoMillis
val date1 = formatter.withZone(DateTimeZone.UTC).parseDateTime("2012-01-03T00:00:00Z")
val date2 = new DateTime(2012, 1, 3, 0, 0, DateTimeZone.UTC)
println(date1.getChronology) // ISOChronology[UTC]
println(date2.getChronology) // ISOChronology[UTC]
assert(date1 === date2) // succeeds
インスタンスが同等として扱われるためには同じ年表が必要であることは知っていますが、文字列内のZ指定子によってUTC年表でDateTime
フォーマッターが解析されることを期待していました。とdate1
の違いについてはかなり混乱していると思いますので、誰かが私が混乱していることを正確に指摘していただければ幸いです。Chronology
DateTimeZone
ところで、コードはScalaにあり、アサーションはScalaTestからのものですが、これは何の違いもありません。