【发布时间】:2020-01-15 16:36:51
【问题描述】:
所以我有一个 LocalDateTime 解析器,它接受一个日期作为字符串。 我已经为它写了几个测试,例如检查闰年等等。
现在我想要一个 JUnit 测试来检查闰秒。 我做了一些研究,发现 java.time(?) 可能是不可能的。 到目前为止,我找到了一个合适的闰秒日期。
这是我迄今为止尝试过的:
@Test
@DisplayName("Check for leap second")
void shouldLeapSecondOccurReturnExactlyTwoMinuteSpan() {
String leapSecond = "2015-06-30T23:59:00+0000";
String leapSecond2 = "2015-07-01T00:01:00";
Assertions.assertTrue(DateConvertUtils.parseIso8601ToUTC(leapSecond)
.isEqual(LocalDateTime.parse(leapSecond2).minusSeconds(120)));
}
而DateConvertUtils 包含我上面提到的解析器和自定义DateTimeFormatter。
感谢您对正确方向的任何帮助。
【问题讨论】:
-
什么是
DateConvertUtils...? -
据我所知,
java.time将忽略闰秒,请参阅How does the (Oracle) Java JVM know a leap second is occurring?(请参阅 Basil Bourque 的回答)。 -
据我所知,java.time 中唯一的闰秒支持是
Instant可以解析闰秒。例如Instant.parse("2015-06-30T23:59:60Z")有效(但会输出2015-06-30T23:59:59Z,因为Instant不能保持闰秒)。
标签: java time junit leap-second