Java 使用 LocalTime 比较没有日期的时间 ​​class

Java compare times without dates using LocalTime class

我正在获取交货时间的 CSV 文件(未排序),我需要按时间对它们进行排序才能使用数据。

我将必要的信息存储在我的 roadDataToBeSorted 数据结构中的 LinkedList 中,该结构由 3 个字符串组成:rdName、rdZipCode 和 rdDeliveryTime。到目前为止,我的研究表明使用 LocalTime class 因为我在 rdDeliveryTime 中的时间格式是 HH:MM:SS.

我不确定如何将我的字符串转换为 LocalTime 对象,然后我可以使用 .isBefore() 函数对我的数据进行排序。

for (int i = 0; i < stopOrderByDeliveryTime.size() - 1; i++) {
   if (LocalTime(stopOrderByDeliveryTime.get(i).rdDeliveryTime).isBefore(LocalTime(stopOrderByDeliveryTime.get(i+1).rdDeliveryTime))) {
      // add element at index (it is earlier than later elements)
   } else {
      // add element to end since it is later than all prior elements
   }
}

为了解析时间,使用LocalTime from Java 8.如果你的格式是HH:MM:SS你可以使用:

    String timeString = "11:10:33";
    LocalTime iaka = LocalTime.parse(timeString, 
    DateTimeFormatter.ISO_LOCAL_TIME);

ISO_LOCAL_TIME 由 Java 提供。 但是,如果您的时间不是 ISO 标准,假设您需要解析:"hours-minutes:seconds.milis" 那么您将需要创建自己的格式化程序并将其传递给 LocalTime.parse:

    String timeString2 = "11-10:33.223";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH-mm:ss.nnn");
    System.out.println(LocalTime.parse(timeString2, formatter));

有关如何自定义的更多信息DateTimeFormatter.ofPattern请查看官方 java 文档:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html