Ну, большинство библиотек, включая пакет java.time
, игнорируют дополнительные секунды. Моя библиотека Time4J , однако, поддерживает это. Пример использования ввода:
String s1 = "2015-06-30T23:59:00+0000";
String s2 = "2015-07-01T00:01:00"; // no offset information
ChronoFormatter<Moment> f =
ChronoFormatter
.ofMomentPattern(
"uuuu-MM-dd'T'HH:mm:ss[X]", // optional offset
PatternType.CLDR,
Locale.ROOT,
ZonalOffset.UTC); // default offset
Moment m1 = f.parse(s1);
Moment m2 = f.parse(s2); // no offset => UTC
long delta = SI.SECONDS.between(m1, m2);
System.out.println(delta); // 121
Объекты типа Момент могут быть легко преобразованы в / из java.time.Instant
, если вы хотите потерять информацию о возможном високосном секунде (если у вас есть 2015-06-30T23:60Z
).
Полезно знать: Вам действительно нужен класс, подключенный к временной шкале UT C. Такие классы, как LocalDateTime
, не имеют понятия часовых поясов, поэтому они не имеют связи с UT C и не могут использоваться для определения високосных секунд по определению.
Более подробную информацию можно найти в моей статье DZone. .