你如何比较Java中的星期和时间

时间:2017-05-01 15:58:14

标签: java sorting datetime

你如何比较"周五下午2:00"反对"周四下午4:00"在Java?

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

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

1 个答案:

答案 0 :(得分:0)

我的解决方案是建立一个代表时代的小班。我们可以将其称为TimeOfWeekWeeklyRecurringEvent或适合您的域名,请尽量明智地选择。该类将有两个实例字段,工作日为DayOfWeek,时间为LocalTimeDayOfWeekLocalTime位于java.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中的课程通常适用于有关日期和时间的有趣要求。你显然可以没有时间或没有约会的时间。你可以有一年中的一天没有一年(有利于记住你的周年纪念日),并提到一周中没有一周的日子等等。不幸的是,没有一个课程可以完全符合您对星期几和时间的要求,这就是为什么我建议将两个现有课程组合在一起。

编辑:您的Stack Overflow个人资料似乎可能是Android程序员?如果你想在Android上使用java.time类,可以使用the ThreeTenABP(这些类首先在JSR-310中描述,因此对于JSR-310来说是ThreeTen,对于Android Backport来说是ABP)。