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

时间:2011-02-05 13:59:46

标签: java date time

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

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

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

我正在努力培养更好的编码习惯,并想知道如何解决这个问题。 在我们的课程中,我们每天都会通过良好实践,面向对象开发以及尽可能使用内置工具和库来解决问题,但这是否适用于这种情况?

我应该:

  1. 使用所有必需的完整性检查等实现我自己的类,存储小时和分钟......
  2. 坚持我拥有的东西,它不漂亮,但比重新发明轮子更好。
  3. 我忽略了这个令人惊讶的简洁解决方案,每个人都知道。
  4. 现在显然我不期待这里的黑白答案,但更多关于如何解决这些问题的指导原则。

    编辑:

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

    经过深思熟虑后,我认为构建自己的解决方案来存储这些信息是最简单,最直观的方法,存在的工具非常出色但比我实际需要的信息复杂得多,可能会导致代码更加臃肿提取我需要的物品。

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

也许只考虑使用int来表示时间。这将是0到1439之间的值(当天的分钟数)。所以中午将被表示为720(12 * 60);上午9:30将是570(9 * 60 + 30),晚上9:30将是1290(21 * 60 + 30)等。

然后可以轻松地将其包装在类中以提取/设置小时和分钟(尽管考虑使此类不可变)。

JodaTime是一个很棒的图书馆,但是你可能会在这里做的事情有些过分。

答案 2 :(得分:2)

java.sql.Time课,如果没有完全打破,可以达到这个目的。我不会使用Calender,因为这是一个非常臃肿的类用于计算,它也包含一个日期部分。我会看joda time,最有可能的是你所需要的。

否则,我会去自己的班级。如果您不想存储秒数等,可能需要它。

答案 3 :(得分:0)

最好的方法可能是使用Joda时间,因为它有描述时间的对象以及没有时间和DateTimes的日期。一般来说,Joda时间是一个更好的库,特别是如果你想要与内置类有点不同的东西。