Как убрать ведущий ноль из времени (часы) - PullRequest
3 голосов
/ 02 апреля 2020

Я хочу иметь час от 1 до 9 без начального нуля, но минуты с нулем, а также добавление 15 минут ко времени. Прямо сейчас, когда я ввожу 1 и 46, я получаю 02:01, и я хочу получить 2: 01

Scanner scan = new Scanner(System.in);
int hour = scan.nextInt();
int minutes = scan.nextInt();
LocalTime time = LocalTime.of(hour , minutes);
time = time.plusMinutes(15);
System.out.println(time);

Ответы [ 2 ]

4 голосов
/ 02 апреля 2020

Вы можете использовать DateTimeFormatter с форматом "Ч: мм" https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html

DateTimeFormatter.ofPattern("H:mm").format(LocalTime.now())

Число: Если количество букв равно единице, затем значение выводится с использованием минимального количества цифр и без дополнения. В противном случае в качестве ширины поля вывода используется количество цифр, при необходимости значение заполняется нулями. Следующие буквы шаблона имеют ограничения на количество букв. Можно указать только одну букву 'c' и 'F'. Можно указать до двух букв «d», «H», «h», «K», «k», «m» и «s». Можно указать до трех букв «D».

3 голосов
/ 02 апреля 2020

Когда вы печатаете time напрямую, он использует toString() метод LocalTime, который задокументирован как:

Вывод будет одним из следующих форматов ISO-8601:

  • HH:mm
  • HH:mm:ss
  • HH:mm:ss.SSS
  • HH:mm:ss.SSSSSS
  • HH:mm:ss.SSSSSSSSS

Используемый формат будет самым коротким, при котором полное значение времени, в течение которого пропущенные детали подразумеваются равными нулю.

Так как вы хотите, чтобы час не был префиксом нуля, вам необходимо указать формат самостоятельно, вызвав метод format(...) вместо метода toString().

Например,

System.out.println(time.format(DateTimeFormatter.ofPattern("H:mm")));
...