在 Java 中存储简单的小时/分钟信息 - 最佳实践问题

2022-09-04 21:32:00

我一直在寻找不同的方法来在Java中存储时间,但我无法完全找到适合我需求的正确实现。

我想存储有关我们课程时间表的信息,此信息主要由开始和结束时间(开始:HH:MM结束:HH:MM)组成。现在,我将在整个代码中使用此数据来创建应用背后的不同视图和逻辑。

现在,我已经使用GregorianCalendar类实现了它,该类工作正常,但是在课程的每个输入中,我最终使用所有+时间的默认日期,然后我继续在整个应用程序中完全忽略该日期。

我正在努力养成更好的编码习惯,并想知道如何解决这个问题。在我们的课程中,我们每天都会通过良好的实践,OO开发以及尽可能使用内置工具和库来锤击头部,但这在这种情况下适用吗?

我应该:

  1. 实现我自己的类存储小时和分钟,以及所有必需的完整性检查等...
  2. 坚持我所拥有的,它不漂亮,但比重新发明轮子更好。
  3. 有一个惊人的干净和简单的解决方案,我忽略了,每个人都知道。

显然,我在这里并不期待一个非黑即白的答案,而是更多地是如何处理这些问题的指导方针。

编辑:

我是原始海报,我注册了一个帐户,但由于我没有链接到帖子,因此实际上无法提交任何内容。

经过仔细考虑,我相信构建自己的解决方案来存储这些信息是最简单,最直观的方法,现有的工具非常出色,但比我实际需要的信息复杂得多,并且可能会导致更臃肿的代码来提取我需要的项目。


答案 1

你可能应该看看Joda Time。它比仅使用或编写自己的日期时间实现更好。Joda Time的另一个优点是创建的对象是不可变的,它具有各种有用的API,用于操作日期时间或执行日期时间检查。java.util.Date


答案 2

也许可以考虑只使用int来表示时间。这将是一个介于 0 和 1439(一天中的分钟数)之间的值。所以中午将表示为720(12 * 60);上午 9:30 为 570 (9 * 60 + 30),晚上 9:30 为 1290 (21 * 60 + 30),依此类推。

然后,这可以很容易地包装在一个类中,以提取/设置小时和分钟(但请考虑使这个类不可变)。

JodaTime是一个优秀的图书馆,但对于你在这里想要做的事情来说,可能有些过分了。