如何在java中使用LocalTime计算2个特定时间的总和?
例如:如何在java中使用LocalTime计算2个特定时间的总和?,java,java-8,localtime,Java,Java 8,Localtime,例如: LocalTime time1 = LocalTime.of(12, 30); LocalTime time2 = LocalTime.of(8, 30); time1 + time2 // Doesn't work. time1.plus(time2) // Doesn't work. 因此,我希望得到两次的总和(12:30+8:30=21:00),格式为(小时:分钟) 还有其他建议吗?您正在尝试添加两个LocalTime变量。这是一个错误的概念。您的time2不应该是Loc
LocalTime time1 = LocalTime.of(12, 30);
LocalTime time2 = LocalTime.of(8, 30);
time1 + time2 // Doesn't work.
time1.plus(time2) // Doesn't work.
因此,我希望得到两次的总和(12:30+8:30=21:00),格式为(小时:分钟)
还有其他建议吗?您正在尝试添加两个
LocalTime
变量。这是一个错误的概念。您的time2不应该是LocalTime
,它应该是持续时间
。添加到时间中的持续时间将为您提供另一个时间。从一个时间中减去一个时间,就会得到一个持续时间。这一切都很好,符合逻辑。两次相加是不正确的
有些黑客可能会将你的时间转换为持续时间,但我强烈建议不要这样做。相反,重新构造代码,使time2首先是一个持续时间 迈克·纳基斯的回答不正确
我上面的句子不是真的。我已经检查过了,只有Java8有LocalTime.of
,所以Mike Nakis的答案是完全正确的。请看他的答案
[本节仍然保留。在joda库中的caseLocalTime
)
我会解释:
以Joda Time为单位的持续时间表示以毫秒为单位的持续时间。持续时间通常从一个间隔中获得。i、 e.我们
可以从间隔的末尾减去开始,以得出持续时间
Joda Time中的时段表示根据字段定义的时段,例如,3年5个月2天7小时。这
与持续时间的不同之处在于它在时间上是不精确的
毫秒。周期只能解析为精确的
毫秒,通过指定瞬间(包括时间顺序和时间
区域)它是相对于。例如,如果我们增加1年
从这到1月1日,我们将始终在下一个1月1日到达,但是
持续时间将取决于中间年份是否为闰年
一年还是一年
LocalTime
是一个不可变的时间类,表示没有时区的时间。所以,基于上述定义,period适合您向LocalTime
添加时间。事实上,API已经证明了这一点:
LocalTime localTime = new LocalTime(10, 30);
Duration d = new Duration(1, 0);
Period p = new Period(1, 0);
LocalTime newLocalTime = localTime.plus(d); // COMPILE ERROR
LocalTime newLocalTime = localTime.plus(p); // SUCCESS
您可以使用sum()方法
它必须工作您可以执行以下操作
LocalTime t1 = LocalTime.of(9, 0); // 09:00
LocalTime t2 = LocalTime.of(2, 30); // 02:30
LocalTime total = t1.plusHours(t2.getHour())
.plusMinutes(t2.getMinute()); // 11:30
当两次相加时,您希望得到什么?您只想将时间2到时间1的小时和分钟相加吗?您可以将持续时间
对象相加-它们表示时间量。您可以将持续时间
添加到本地日期
。你不能添加两个日期-这完全没有意义…@Pshemo ALocalTime
不是日期,它是一天中的一个时间(小时、分钟、秒)。@Jesper哦,你是对的,我把它误读为LocalDate。不管怎么说,问题仍然是相似的:OP预期的结果是什么?为什么?@MikeNakis,我为所有人感到抱歉。我再次投票支持你的答案(我需要编辑,以便再次投票,哈哈)。很抱歉,我没有仔细看原始问题。
LocalTime t1 = LocalTime.of(9, 0); // 09:00
LocalTime t2 = LocalTime.of(2, 30); // 02:30
LocalTime total = t1.plusHours(t2.getHour())
.plusMinutes(t2.getMinute()); // 11:30