2010-08-31 48 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?", ":""));