2016-02-06 1 views
1

Я хочу отображать/распечатывать время, например 02:15PM и уметь устанавливать время, основанное только на минут (возможно, больше 59).Отобразить Java 8 Time api в этом формате «HH: mma» (17:53 PM) и добавить установленное время только с минутами

Это не похоже на работу:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mma"); 
    String text = time.format(formatter); 
    LocalTime parsedTime = LocalTime.parse(text, formatter); 

это показывает время как 16:15 поэтому его формат неправильно 12/24 (и AM/PM не хватает конечно)

до сих пор я установил время, как это:

void setTime(int minutes) { 
    time = LocalTime.of(minutes/60, minutes % 60); 
} 

есть способ сделать это в более изящным способом (читай: без деления)?

Я не хочу использовать время Джоды.

ответ

3

Как обсуждалось, используйте hh вместо HH для AM/PM Часы. Список шаблонов подробно описан в the javadoc. Пример:

LocalTime time = LocalTime.of(18, 0); 
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mma"); 
System.out.println(fmt.format(time)); //06:00PM 

Что касается создания времени от нескольких минут, вы можете использовать:

LocalTime.MIDNIGHT.plusMinutes(minutes); 
2
  1. Заменить "HH" с "чч": DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mma");
  2. Slighty более элегантный способ времени настройки по минутам: LocalTime.ofSecondOfDay(minutes * 60)
Смежные вопросы