2015-03-13 196 views
0

必須將開始時間和結束時間拆分爲相等的時間間隔。在Java中將時間拆分爲相等的時間間隔

E.g.

開始時間: 10AM, 結束時間: 14PM, 拆分時間:30分鐘

輸出必須是這樣的 -

:::: 輸出 :::

[{time:「10:00」},{time:「10:30」},{time:「11:00」},{time:「11:30」},{時間: 「12:00」},{時間: 「12:30」},{時間:「13:00」},{time:「13:30」},{time:「14:00」}]

謝謝大家。

+0

你嘗試了什麼? – 2015-03-13 08:48:12

+0

如果剩下一個存根,你會怎麼做?即想象結束時間是晚上14點15分? – Bathsheba 2015-03-13 08:48:12

+0

你覺得for循環怎麼樣?這很難嗎? (for int time = 10 * 60; time <14 * 60; time + = 30){}'。你可以問一個問題,如果你不明白的東西,但你必須嘗試一些並展示它。 – 2015-03-13 08:49:22

回答

2

首先,將小時轉換爲分鐘。

10AM = 10 * 60 minutes 
2PM or 14h = 14 * 60 minutes 

然後,以分鐘轉換回時間:

minutes/60 gives the number of hours 
minutes % 60 gives the number of the minutes in the last hour. 

如果你想在2位帶有前導零的,使用總是顯示時/分,並最終墊:

String result = String.format("%02d", minutes/60); 

2表示要2位和0表明您用零墊)

儘管如此,也有從10*6014*6030 minutes步驟2種方式:

最直觀的:while循環

public static void interval(int begin, int end, int interval) { 
    int time = begin; 
    while (time <= end) { 
    System.out.println(String.format("%02d:%02d", time/60, time % 60)); 
    time += interval; 
    } 
} 

但我不喜歡while循環。如果你做錯了(或者如果輸入數據是錯誤的),它會以無限循環結束。

另一種方式:如你所知的開始,結束及步驟,使用for循環:

public static void interval2(int begin, int end, int interval) { 
    for (int time = begin; time <= end; time += interval) { 
    System.out.println(String.format("%02d:%02d", time/60, time % 60)); 
    } 
} 

測試

interval2(10 * 60, 14 * 60, 30); 

結果

10:00 
10:30 
11:00 
11:30 
12:00 
12:30 
13:00 
13:30 
14:00 
+1

Arnaud Denoyelle,這就是我一直在尋找的東西。我是Java新手。感謝您的詳細解釋。 – irengba 2015-03-13 09:58:16