Используйте строчную букву шаблона X
для смещения, которое может использовать Z
для нуля
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HHmmssXXX");
OffsetTime time = OffsetTime.parse("115601Z", timeFormatter);
System.out.println(time);
Выходные данные из этого фрагмента:
11: 56: 01Z
Для преобразования в LocalTime
просто используйте .toLocalTime()
, как вы уже делаете.
Для буквы шаблона Z
укажите смещение как +0000
Редактировать: Как вы упомянули в комментарии, противоположный способ исправить ситуацию - сохранить строку шаблона формата и проанализировать строку, которая соответствует требуемому формату:
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HHmmssZ");
OffsetTime time = OffsetTime.parse("115601+0000", timeFormatter);
Результат такой же, как и раньше. Одна заглавная буква Z
в строке шаблона формата соответствует (цитируя документацию):
… час и минута без двоеточия, например «+0130».
Ссылка
Документация DateTimeFormatter
и шаблон букв.