【问题标题】:Java compare times without dates using LocalTime classJava使用LocalTime类比较没有日期的时间
【发布时间】:2021-11-19 19:49:26
【问题描述】:

我正在获取一个包含交货时间(无序)的 CSV 文件,我需要按时间对它们进行排序以使用数据。

我将必要的信息存储在我的 roadDataToBeSorted 数据结构中的 LinkedList 中,该结构由 3 个字符串组成:rdName、rdZipCode 和 rdDeliveryTime。到目前为止,我的研究表明要使用 LocalTime 类,因为我在 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.parse
  • 不清楚你在问什么。你看过JavaDoc吗?你试过什么。 LocalTime.parse(CharSequence) 似乎是主要候选人。顺便说一句,使用LinkedList 几乎没有意义,ArrayList 几乎总是性能更好,并且内存开销显着减少。
  • 是的,我错过了解析函数,它解决了我的问题,并且我的 isBefore 方法按预期工作。并注意,我将切换到 Arraylists 并对此进行一些研究,谢谢!

标签: java localtime


【解决方案1】:

为了解析时间,请使用 Java 8 中的 LocalTime。如果您的格式是 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

【讨论】:

  • LocalTime.parse(CharSequence) 默认使用DateTimeFormatter.ISO_LOCAL_TIME,所以不需要显式传递。
  • @MarkRotteveel,是的,因为这种格式通常在西半球使用,它被 java 重载: public static LocalTime parse(CharSequence text) { return parse(text, DateTimeFormatter.ISO_LOCAL_TIME);但是如果你对你得到的字符串不走运,你最好知道如何创建自己的格式化程序
猜你喜欢
  • 1970-01-01
  • 2021-04-22
  • 2017-10-12
  • 1970-01-01
  • 2012-07-22
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多