【问题标题】:How do you compare Day of week and Time in Java你如何比较Java中的星期几和时间
【发布时间】:2017-09-29 01:09:33
【问题描述】:

您如何比较 Java 中的“星期五下午 2:00”和“星期四下午 4:00”?

输入数组: 周五下午 2:00 星期四凌晨 2:00 周六下午 4:00

输出: 星期四凌晨 2:00 周五下午 2:00 周六下午 4:00

【问题讨论】:

  • 为什么把星期四放在星期五之前?如果他们在不同的星期怎么办?
  • 这个链接应该可以帮助你弄清楚:google.ca/…
  • Strings解析为Calendar对象或LocalDateTime对象,然后使用.compareTo()...
  • Java Time API 开头。这是Oracle tutorial。请注意,LocalDateTime 实例是 Comparable。
  • @Lashane - 输入数据总是只有 1 周,所以需要这样排序。

标签: java sorting datetime


【解决方案1】:

我的解决方案是建立一个代表时代的小类。我们可以称它为TimeOfWeekWeeklyRecurringEvent 或任何适合您的领域,请尝试明智地选择。该类将有两个实例字段,DayOfWeek 用于工作日,LocalTime 用于时间。 DayOfWeekLocalTimejava.time 中(在 Java 8 中引入并向后移植到 Java 6 和 7)。我的类将有一个构造函数接受String 参数,如"Friday 2:00 PM",并将其解析为两个实例字段。我相信相同的DateTimeFormatter 可以用于两者,所以这可能是一个类常量(私有静态最终字段)。 DayOfWeek 没有 parse 方法,所以你需要像 DayOfWeek.from(yourDateTimeFormatter.parse(yourString)) 这样的东西。

您的类应该实现Comparable,这样您就可以按对象的自然顺序对对象进行排序。在您的compareTo 方法中,首先比较星期几,然后如果日期相同,则比较时间。 DayOfWeek从周一到周日自然排序;如果您的一周从星期一以外的另一天开始,则需要特别处理。

你的班级也可以有一个ZoneId 时区字段,但假设你所有的时间都在同一个时区,可能没有理由。

您还可以看看是否可以在某个地方找到符合您要求的课程;使用您的搜索引擎。我不知道,但你永远也说不出来。

java.time 中的课程通常很适合满足有关日期和时间的有趣要求。您显然可以有一个没有时间的日期或没有日期的时间。您可以在一年中的某一天没有一年(有利于记住您的周年纪念日),如前所述,一周中的某一天没有一周,等等。不幸的是,没有一门课程可以完全符合您对星期几和时间的要求,这就是为什么我建议将两个现有课程放在一起。

编辑:对于 Android 程序员,如果您想在 Android 上使用 java.time 类,请获取并使用 the ThreeTenABP(这些类首先在 JSR-310 中进行了描述,因此对于 JSR-310 来说是 ThreeTen,对于 Android 来说是 ABP向后移植)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多