2015-02-09 67 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