在Java中减去时间

时间:2013-02-04 14:18:01

标签: java date time

您好我正在尝试创建一个教师实用程序以移植到Android操作系统。但是我遇到了一点麻烦。我想创建一个名为Period的类。该类将包含该期间的开始和结束时间。即。第一阶段从7:45开始,到8:45结束。我还想有一个时间留下来的方法。例如它现在是8:10并且还剩35分钟。我可以从System.currentTimeMillis()获取当前时间。但是,我无法找到存储期间开始和结束时间的最佳方法。我已经看过Java中的Calendar类,似乎时间总是与日期和时间联系在一起。这似乎没有为我的申请提供优惠,因为期间的结束时间发生在多天而不仅仅是在某个特定日期。任何帮助理解这将是一个很大的帮助。谢谢大家

5 个答案:

答案 0 :(得分:1)

如果您的目标是能够将期间的开始和结束时间与当前时间进行比较,那么您需要一种方法来计算当前时间段的日期和时间。

因此,今天获取一个Calendar实例,将其时间设置为7:45,并将日历的时间与当前时间进行比较(当然,上限相同)。

要表示每个边界,您可以简单地使用int作为小时,使用第二个int作为分钟。

答案 1 :(得分:0)

查看JodaTime库。 DateTime对象具有您想要的功能。

答案 2 :(得分:0)

答案 3 :(得分:0)

Calendar是围绕类Date的包装器之王,它主要是不推荐使用的函数。我听说JodoTime API非常适合比较两个时间戳(http://joda-time.sourceforge.net/)。

存储句点的开始和结束时间的一种方法是实例化日期的ArrayList,以便您可以将任何给定时间与课程时段进行比较。

答案 4 :(得分:0)

据我所知,您应该将时间存储为距离上午午夜的秒数(可选毫秒)。因此,您的第一个期间7.45开始于45 * 60(每分钟45分钟* 60秒)+ 7 * 60 * 60(7小时乘以分钟数秒!)= 2 700 + 25 200 = 27 900 < /强>

对结束日期进行相同的计算,只要它们在同一天开始和结束,您就可以轻松地减去差异,从而获得两者之间的间隔。如果它们不是在同一天发生的话,那么Java的时间和日期类都是优秀的,也是必须的。这些类基本上使用相同的算法,但不计算“最后午夜”的秒数,而是计算UNIX纪元时间(1970年1月1日)的毫秒数。