我想从 Java
中的时间格式列表中找到最大时间例如,它看起来像这样:
String times = "11:20, 12:20, 13:20, 14:20, 15:20"
如何从我的时间中获取最大时间(例如15:20)?
答案 0 :(得分:0)
您可以执行以下代码;
String times = "11:20, 12:20, 13:20, 14:20, 15:20";
String[] allTimes = times.replaceAll(" ", "").split(",");
String maxTime = Stream.of(allTimes).max(String::compareTo).get();
现在您可以将maxTime
转换为LocalTime
或任何您想要的东西。
答案 1 :(得分:0)
有两种选择:
1)使用这些时间作为字符串进行操作:
String timesString = "11:20, 12:20, 13:20, 14:20, 15:20";
//split to array of ["11:20", "12:20", ..., "15:20"]
String[] timesStringArray = timesString.split(", ");
//find lexicographic maximum (in this case it will be equals to max time)
String maxDateString = Collections.max(Arrays.asList(timesStringArray));
2)使用这些时间作为日期进行操作:
String timesString = "11:20, 12:20, 13:20, 14:20, 15:20";
//split to array of ["11:20", "12:20", ..., "15:20"]
String[] timesStringArray = timesString.split(", ");
//create formatting string for our case to convert string to Date
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
//create list of dates
List<Date> times = new ArrayList<>();
for (String time : timesStringArray) {
try {
times.add(dateFormat.parse(time));
} catch (ParseException e) {
e.printStackTrace();
}
}
//find max time as Date
Date maxDate = Collections.max(times);
// convert back to String if needed
String maxDateString = dateFormat.format(maxDate);
答案 2 :(得分:0)
String times = "11:20, 12:20, 13:20, 14:20, 15:20";
String[] timeArray = times.split(", ");
Optional<LocalTime> maxTime = Arrays.stream(timeArray)
.map(LocalTime::parse)
.max(Comparator.naturalOrder());
maxTime.ifPresent(System.out::println);
此打印:
15:20
我更喜欢为值使用适当的类型,而不是将所有内容都放在字符串中。 LocalTime
是一天中某个时间的正确类别(没有日期,没有时区或偏移量)。