2017-01-29 11 views
2

я пытаюсь создать объект класса Java LocalTime так:LocalTime - Добавить лидирующего нуля до минуты

LocalTime beginning = LocalTime.of(int hours, int minutes); 

Моя проблема заключается в том, что я хотел бы, что мой пользователь может ввода времени в следующий формат: HH: MM Однако, когда есть такой ввод, как 14:00, как String, я заменяю «:» на «».

Тогда я говорю:

hours = Integer.parseInt(eingabe.substring(0, 2)); 
minutes = Integer.parseInt(eingabe.substring(2)); 

Но теперь минут 0, а не 00, как я хочу, чтобы это. Я провел некоторое исследование и нашел что-то вроде String.format("%02d", minutes), но параметры LocalTime.of() должны быть целыми числами.

+0

Часы и минуты могут быть сохранены как int, а это означает, что 0 не 00. Вам нужно только это для вывода, в этом случае вы можете использовать 'String.format («% 02d », minutes)', чтобы получить строка для вывода, как вы уже исследовали. – Alex

+0

Спасибо Я также узнал, что метод to.String() получает мне вывод, который я хотел. – CWhite

+0

@CWhite это не 'to.String', то есть' .toString(); ' –

ответ

0

Вы не можете получить int с двойным нулем, потому что это целочисленное значение, единственный способ получить двойной ноль - форматирование вашего LocalTime в String. Существуют разные способы сделать это, и это зависит от используемого вами API даты. Видя ваши классы я предполагаю, что ваше использует JodaTime, поэтому мой пример будет сосредоточен на этот API, поэтому для форматирования объекта, вы можете сделать это:

public static String toTimeString(LocalTime source) { 

    try { 
     return source.toString("HH.mm"); 
    } catch (Exception ignored) { 
    } 

    return null; 
} 
2

Если у вас есть вход как 14:00 вы не» т нужно сделать форматирование вручную, вместо этого вы можете использовать java.time.format.DateTimeFormatter:

String input = "14:00"; 
DateTimeFormatter simpleTime = DateTimeFormatter.ofPattern("HH:mm"); 
LocalTime localtime = LocalTime.parse(input, simpleTime); 

Однако исходная проблема не является проблемой, чтобы начать с. «00» в «14:00» - это просто форматирование, это не означает, что целое значение минут составляет 00: оно равно 0; это просто отображается как «00», чтобы быть менее запутанным для людей, просматривающих время (например, трудно отличить 14:1 от 14:10 и т. д.).