java查找两次约会之间的总小时数
我有两个日期对象,我需要得到时间差,这样我就可以确定它们之间的总小时数。他们恰好来自同一天。我想要的结果是小时和分钟
当我使用。toString()在我的约会对象上,我得到以下信息:Fri Dec 18 08:08:10 CST 2009
我试过以下方法:
long diff=(this.endDate.getTime()-this.startDate.getTime())/(60*60 * 1000);
但这只给了我几个小时,而不是几分钟。 我知道这是个简单的问题,但我搞不懂
编辑: 为感兴趣的人提供最终解决方案。感谢迈克尔·布鲁尔·戴维斯
Period p = new Period(this.startDate, this.endDate);
long hours = p.getHours();
long minutes = p.getMinutes();
String format = String.format("%%0%dd", 2);
return Long.toString(hours)+":"+String.format(format, minutes);
# 1 楼答案
爪哇。时间持续时间
我想给出现代(Java8+)的答案。使用Joda Time的解决方案很好。Joda Time项目处于维护模式,因此对于新代码,我们不应该使用它。我遵循Joda Time项目的官方建议,使用java。时间,现代Java日期和时间API:
如果} 或^{} 或^{} 或^{} 或} 包。如果以^{} 开头,则调用^{} 方法之一
startDate
和endDate
都有类型^{LocalTime
的话,这是可行的。所有提到的类型都来自^{Java 9中引入了
toMinutesPart
方法。如果您使用的是Java 8(ot Threen Backport),请搜索java format duration
或类似内容,了解如何将持续时间格式化为小时和分钟Joda Time主页上的两段话:
链接
# 2 楼答案
请按照Somaiah的建议发表评论,改为使用小时:
对getHours()的调用将只返回时差的小时部分,并忽略全年、月份的时差,因此在某些情况下是不正确的
如果你用句号。toStandardHours()要尝试将时差转换为小时,如果两个日期之间的时差包括年或月的时差,则计算将抛出异常,因为月的长度未知
# 3 楼答案
这应该行得通
# 4 楼答案
以下是简单的方法: