Проблема с датами Java - PullRequest
       48

Проблема с датами Java

0 голосов
/ 07 апреля 2011

Я хотел бы задать вопрос.У меня есть список с датами, например:

Пт Ян 07 00:00:00 CET 2011
Пт Ян 07 00:01:00 CET 2011
Пт Ян 07 00:03:00 CET 2011
пт 07 января 00:05:00 CET 2011
пт 07 января 00:06:00 CET 2011

И затем пользователь вводит интервал минуты, например: 2
Я должен получать каждую дату из списка, которые находятся в промежутке между 2 минутами.
Вывод должен выглядеть следующим образом:

1.                    
Fri Jan 07 00:00:00 CET 2011    
Fri Jan 07 00:01:00 CET 2011 

2.   
Fri Jan 07 00:03:00 CET 2011  
Fri Jan 07 00:05:00 CET 2011   

3.
Fri Jan 07 00:06:00 CET 2011  

Проблема в том, что я не знаю, как это сделать.Любая идея приветствуется.:)

Ответы [ 3 ]

0 голосов
/ 07 апреля 2011

Преобразование даты в метки времени и деление их (без остатка) на интервал. Все даты с одинаковым результатом записываются в один и тот же блок.

/* Psydo Code */

int offset = firstTime.getTimeStamp() / intervallInMilliSec;
int max = lastTime.getTimeStamp() / intervallInMilliSec;
SortedSet<Date>[] result = new SortedSet<Date>[max - offset];
    for(int i = 0; i < max - offset] result[i] = new SortedSet<Date>();
for(Date time : fromFile) {
  result[(time.getTimeStamp() / intervallInMilliSec) - offset].add(time);
}
0 голосов
/ 07 апреля 2011

Я бы настоятельно рекомендовал использовать библиотеку Joda Time для такого рода вещей:

http://joda -time.sourceforge.net /

ВстроенныйС Java-классами довольно сложно работать - вы будете постоянно конвертировать вещи в long, заниматься математикой, а затем придется конвертировать обратно в различные объекты Date & Calendar.Joda заботится обо всем этом.

0 голосов
/ 07 апреля 2011

Отредактировано на основе ваших комментариев: Сортировать по дате.Начните с самой низкой даты, добавьте к ней любые даты в пределах интервала.Затем перейдите к следующей наименьшей дате, которая не принадлежит интервалу, и повторяйте, пока список не станет пустым.

...