2015-02-06 3 views
0

У меня есть массив объектов Даты:получить ближайшее время к текущему времени

Date[] vakitlarDate; 

Я хочу, чтобы получить время закрытия текущего время из этой области.

Я мог бы вычислить следующий раз текущего времени из массива, выше которого является vakitlerDate

Я использовал эту функцию:

@Override 
    public void run() { 
     // nextTime will be calculated here, which is the next time 
     nextTime = new Date(); 
     Date now = new Date(); 
     try { 
      Date[] vakitlarDate = vakitler.getVakitlarAsDateArray(); 
      boolean morningIsNextTime = true; 
      // For loop to get next time of now 
      for (int i = 0; i < Vakitler.NUM_OF_VAKITLER; i++) { 
       if (now.after(vakitlarDate[i])) { 
        continue; 
       } else { 
        nextTime = vakitlarDate[i]; 
        currentTimeIndex = i; 
        morningIsNextTime = false; 
        break; 
       } 
      } 

      if (morningIsNextTime) { 
       // Next time is morning of next day 
       // TODO: add one day here to get next day morning 
       nextTime = vakitlarDate[0]; 
      } 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

Я просто не мог получить самое близкое время в настоящую от массив.

Площадь заказа с утра до вечера. и это время в тот же день.

Любые идеи?

ответ

0

Я решил это:

  List<Date> vakitlerDateList = getVakitlerAsListOfDate(); 
      Date closest = Collections.min(vakitlerDateList, new Comparator<Date>() { 
       public int compare(Date d1, Date d2) { 
        long diff1 = Math.abs(d1.getTime() - now); 
        long diff2 = Math.abs(d2.getTime() - now); 
        return diff1 < diff2 ? -1 : 1; 
       } 
      }); 

closest будет ближе всего к ныне

0

я думаю, вы должны использовать, прежде чем() не после того, как()