современный API даты и времени , который был впервые представлен с Java SE 8 и был дополнительно расширен в последующих выпусках, предоставляет богатый набор API для управления датой, временем и их форматированием. Ниже приведена демонстрация того же:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// Test strings
String[] strTimes = { "1:00", "01:00", "1:00 pm", "1:00 am", "01:00 am", "01:00 pm", "13:10", "8:9", "8:9 am" };
// Define the formatter
DateTimeFormatter inputFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("[h:m a][H:m]")
.toFormatter(Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("HH:mm");
for (String strTime : strTimes) {
LocalTime time = LocalTime.parse(strTime, inputFormatter);
// String to be displayed or saved into the database
String formattedTime = time.format(outputFormatter);
System.out.println(formattedTime);
}
}
}
Вывод:
01:00
01:00
13:00
01:00
01:00
13:00
13:10
08:09
08:09
Было подвержено ошибкам, а также было сложно сделать то же самое, используя устаревший API даты и времени. Для ваших требований я рекомендую вам использовать LocalTime
(поэтому я выбрал LocalTime
в демонстрации). Вы можете узнать больше о современном API даты и времени из Trail: Date Time