2010-08-31 3 views
2

Мне нужно повторить время на один день. У меня есть время начала: 00:00 и время окончания: 23:59. Я хочу циклически проходить каждую минуту часа.java - циклическое время в течение дня

Как я могу достичь этого на Java? Существует ли какая-либо библиотека Java для этого?

+1

Вам нужно, чтобы это был объект даты или просто отображали цифры? – dave

+0

всего лишь час и время. нет объекта даты. должно быть следующим: 9: 00, 9: 01,9: 02 ... 10: 00,10: 01 .. – JJunior

ответ

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

Это не работает, чтобы сделать слишком много циклов ??? – JJunior

+2

Нет. Обычно вы правы, чтобы быть подозрительными в отношении вложенных циклов - они будут работать в O (n^x), где x - это количество раз, когда цикл вложен. В этом случае, однако, всегда есть ровно 1440 итераций. Если вы выражаете это как единый цикл, который повторяется 1440 раз или цикл, который вызывает цикл, который повторяется 60 раз 24 раза (60 * 24 = 1440), вы будете выполнять 1440 действий. Таким образом, использование двух циклов является вполне разумной - и более читаемой - реализацией. Хороший оптимизирующий компилятор, скорее всего, будет разворачивать обе реализации, и вы получите идентичный машинный код. – Scott

+0

Нет больше циклов, чем в коде Гари, просто разделить на часы и минуты –

0

Вы можете перебрать минут каждый час и час в день с помощью простого цикла и по модулю

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

Это странная форма Java. – DJClayworth

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?", ":"")); 
Смежные вопросы