计算两个时间之间的差异

3
我正在计算两个时间之间的差异,并能够使用单独的方程得出小时和分钟的差异,是否有任何一种单一方程可以在一次运算中得出小时和分钟。我正在使用以下方式:
这里的“diff”是两个时间值之间的差异。
long diffHours1 = diff / (60 * 60 * 1000);
long min=diff/(60*1000);

2
为什么不使用适当的模式(如hhHH)与 SimpleDateFormat 类呢? - Sam
4个回答

5

我不确定这里是否有用,但Joda Time似乎使用Period提供了一个更加详细的解决方案。

Period p = new Period(startDate, endDate)
int minutes = p.getMinutes(); //returns the left over minutes part
int seconds = p.getSeconds(); //returns the seconds part

我不确定在这种情况下你是否需要比你已经拥有的更多东西,我同意aix的观点。

(相关IT技术内容翻译完毕)

1
+1 for Joda time - 绝对是Java最好的时间/日期解决方案 - mikera
1
我认为这个答案必须被接受为最佳答案。(这是我的观点) - Sam
@EranMedan 也许“Java的日期类必须消失。”这个标题是正确的 ;) 但现在它已经成为了标准,更好的方法是在POJO bean中使用它,并在实用程序层中使用JodaDate4J等工具;) - Sam

1
有没有一种单一的方程式可以一次性得到小时和分钟?
不,不容易。Java表达式只能有一个结果;返回多个结果并不是不可能,但需要额外的机制(包装类、元组等)。这将导致代码比您现在拥有的代码复杂得多。
为了简化事情,您可以先计算分钟,然后根据分钟计算小时:
long diffMinutes = diff / (60*1000);
long diffHours = diffMinutes / 60;

1

有的:

String oneGo = (diff / (60 * 60 * 1000)) + " " + (diff / (60 * 1000));

:-)


1

嗯,两个方程并不那么糟糕(实际上使用更多的行使其更易于阅读),尽管您可能会改变顺序,纠正方程并缓存一些结果。

diff = //time difference in milliseconds
long diffInMinutes = diff / (60 * 1000);    

//get the number of hours, e.g. 140 / 60 = 2
long hours = diffInMinutes  / 60;

//get the left over minutes, e.g. 140 % 60 = 20
long minutes = diffInMinutes  % 60;   

如果您想要一个方程式的原因是为了使用方便,可以尝试使用类似Joda Time这样的替代库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接