2015-02-09 33 views
2

实施例:如何使用LocalTime在java中总结2个特定时间?

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)的总和(小时:分钟)。

其他建议?

+0

你加起来两次会有什么期望? – 2015-02-09 14:45:34

+0

你只是想添加从time2到time1的小时和分钟吗? – bhspencer 2015-02-09 14:47:15

+3

您可以将'持续时间'对象加在一起 ​​- 它们表示一段时间。您可以将“持续时间”添加到“LocalDate”。你不能添加两个日期 - 它绝对没有意义... – 2015-02-09 14:48:35

回答

9

您正试图添加两个LocalTime变量。作为一个概念这是错误的。你的时间2不应该是LocalTime,它应该是Duration。一段时间增加的时间给你另外一个时间。从时间中减去一个时间会给你一个持续时间。这是很好的和合乎逻辑的。两次加在一起不是。

有些黑客可能会将您的时间转换为持续时间,但我强烈建议您不要这样做。相反,重构您的代码,以便time2首先是Duration

+0

伟大的解释! – 2015-06-27 15:52:06

1

Mike Nakis的答案并非如此。

上面的这句话我的不真实。我已经检查过并且只有Java 8有LocalTime.of,所以Mike Nakis的回答是完全正确的。请看他的答案。

[本部分仍保留。在约达文库]

情况LocalTime我将解释:

在约达-的持续时间表示以毫秒计的时间的持续时间。持续时间通常从间隔获得。即我们 可以从间隔的末尾减去开始以得出持续时间。

Joda-Time中的时间段表示按照字段定义的时间段,例如3年5个月2天和7小时。这个 与持续时间的不同之处在于它在 毫秒方面不准确。通过指定与时间有关的时间(包括时间顺序和时间 区域),只能将时间段解析为精确数量 毫秒。例如考虑一年的时间,如果我们在1月1日加上 ,我们将永远到达明年1月1日,但是 的持续时间取决于干预年份是否是跳跃 年。

LocalTime是表示时间没有时间区一个不变的时间类。因此,根据上述定义,期限适合您在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 
+0

@MikeNakis我很抱歉。我已经提出了你的答案(我需要编辑,所以我可以再次upvote,哈哈)。对不起,我没有仔细看到原始问题。 – hqt 2015-10-04 18:13:26

+1

没关系,它发生了。 Ç - := – 2015-10-04 18:13:50

0

你可以使用的方法和()

LocalTime time1 = LocalTime.of(12, 30); 
LocalTime time2 = LocalTime.of(8, 30); 
Integer hour1 = time1.getHour(); 
Integer hour2 = time2.getHour(); 
Integer minute1 = time1.getMinute(); 
Integer minute2 = time2.getMinute(); 

Integer first = Integer.sum(hour1,hour2); 
Integer second = Integer.sum(minute1,minute2); 

System.out.println("The time is "+ first + " : " + second); 

它必须努力

0

您可以执行下列操作...

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 
相关问题