我试图在我的单元测试中比较两个 Joda 日期是否相等。expected
用new DateTime(...)
while创建,parsed
用DateTimeFormatter
.
虽然我的日期字符串包含时区片段+02:00
,但解析的日期具有时区Europe/Berlin
。这在语义上是正确的(至少在 DST 期间),但是这两个日期不正确equal
。
当然,我可以使用 来创建我的预期时区DateTimeZone.forID("Europe/Berlin")
,但恕我直言,这并不完全正确。在冬季和夏季Europe/Berlin
有一个偏移量。输入字符串明确指出,因此如果输入日期是在冬季,我的单元测试将失败。+01:00
+02:00
+02:00
有想法该怎么解决这个吗?
示例代码
DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
DateTime expected = new DateTime(2013, 6, 22, 11, 7, 22, 123, DateTimeZone.forOffsetHours(2));
String input = "2013-06-22T11:07:22.123+02:00";
DateTime parsed = formatter.parseDateTime(input);
System.out.println("expected: " + expected + " (" + expected.getChronology() + ")");
System.out.println("parsed : " + parsed + " (" + parsed.getChronology() + ")");
System.out.println("equal : " + expected.equals(parsed));
示例输出
expected: 2013-06-22T11:07:22.123+02:00 (ISOChronology[+02:00])
parsed : 2013-06-22T11:07:22.123+02:00 (ISOChronology[Europe/Berlin])
equal : false