gpt4 book ai didi

java - 如何在时间表中表示时间段

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:17 26 4
gpt4 key购买 nike

我正在编写一个允许用户注册大学类(class)的网络应用程序。类(class)可以在特定的时间段内进行——一个时间段是一天(在一周内,即周日、周一等)和一个小时。有固定的时间段可以提供类(class)。我的问题是 - 实现这些时隙的最佳方式是什么?

我曾以为只是使用一个枚举,但后来有 70 个时隙。所以我想到了两个枚举 - 一个用于工作日(尽管我敢打赌这已经存在于某个地方 - 你知道我在哪里可以找到这种现有的枚举吗?)和一个用于允许的时间(例如 - 8:00 , 9:00, 10:00, 等等) 并且有一个 Timeslot 类包含这两个。

不过,我觉得一定有一个我没想到的更优雅的解决方案——你觉得呢?

最佳答案

java.time

您正在使用现在已被 java.time 类取代的麻烦的旧遗留类。

DayOfWeek

java.time.DayOfWeek class 是一个枚举,它已经定义了七个对象,一个对应一周中的每一天。它们按照标准 ISO 8601 顺序编号,周一至周日为 1-7。

制作WeekTimeSlot

似乎您想表示星期几和一天中的时间的一般概念。您没有在时间轴上确定特定时刻。所以你只需要一个 LocalTime 开始和停止时间的类。此类缺少日期和时区。

我建议定义一个至少包含三个成员的类:

您可能还想跟踪每个槽的时间长度,而不是在运行时重复计算。

枚举适用于数量有限的对象,这些对象的值在编译时已知。我希望您的值在不同学期/季度的运行时会有所不同。所以不适合枚举。

EnumMap

如果您想按星期几对插槽进行分组,请使用 EnumMap . Map 的实现已针对键值是枚举对象时的使用进行了优化。你会映射 DayOfWeek反对 List<WeekTimeSlot> .

Map实现占用的内存很少,运行速度非常快。

时间轴上的时刻

如果您需要将这些槽应用到实际时间轴上特定日期的特定时刻,请使用 LocalTime连同 LocalDate 和一个 ZoneId 得到 ZonedDateTime .

您可能会发现 Interval 有帮助来自 ThreeTen-Extra 的类(class)项目,java.time 类的扩展。此类表示时间轴上一对时刻之间的时间跨度。

关于java - 如何在时间表中表示时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com