2010-08-31 35 views
2

我需要迭代一天的時間。 我有開始時間:00:00和結束時間:23:59。 我想循環一小時的每一分鐘。java - 循環時間爲一天

我該如何在Java中實現這一點?是否存在任何Java庫?

+1

你需要它作爲日期對象還是隻顯示數字? – dave 2010-08-31 15:44:36

+0

只需一小時和時間。沒有日期對象。 應該是這樣的:9:00,9:01,9:02 ... 10:00,10:01 .. – JJunior 2010-08-31 15:58:46

回答

5
for (int hour = 0; hour <= 23; hour++) { 
    for (int minute = 0; minute <= 59; minute++) { 
     // ... 
    } 
} 
+0

這個工作不會做太多的循環? – JJunior 2010-08-31 15:59:12

+2

不可以。您通常會懷疑嵌套循環 - 它們將傾向於在O(n^x)時間內運行,其中x是循環嵌套的次數。 但是,在這種情況下,始終有1440次迭代。無論您將其表達爲重複1440次的單個循環,還是將循環重複60次24次(60 * 24 = 1440)的循環,您將執行1440次操作。因此,使用兩個循環是一個完全合理且更具可讀性的實現。一個好的優化編譯器可能會展開這兩個實現,並且最終會得到相同的機器代碼。 – Scott 2010-08-31 16:13:52

+0

沒有比在Garee的代碼中更多的循環,只是分成幾小時和幾分鐘 – 2010-08-31 16:14:49

0

您可以通過循環使用一個簡單的循環,每天的每個小時和小時的分模

while hour < 24: 
    mins = (mins + 1) % 60 
    hour += mins == 0 ? 1 : 0 
+2

這是一種奇怪的Java形式。 – DJClayworth 2010-08-31 15:56:39

1

1小時是60分鐘。 60分鐘x 24小時=每天1440分鐘。

int minutes; 
for (minutes = 1440 ; minutes > 0; minutes--) // 00:00 - 23:59 
{ 
    // YOUR CODE 
} 
1

這是簡單的數據和格式分離:

for(int minutes = 0; minutes < 1440; minutes++) //1440 = 24 * 60 
    System.out.println(String.format("%d:%2d", minutes/60, minutes%60)); 

如果你想逗號劃定爲你顯示你上面可以加入自定義匿名迭代器的結果還是這樣做:

for(int minutes = 0; minutes < 1440; minutes++) //1440 = 24 * 60 
    System.out.print(String.format("%d:%2d%s", minutes/60, minutes%60, minutes<1439?", ":""));