2014-01-03 2 views
1

Я использую 2-сторонние пикеры в своем приложении, скажем одно для FROM-Time и второе для TO-Time. Теперь я хочу проверить, что при установке TO-Time это не должно быть меньше, чем FROM-Time, и это не позволит изменить время меньше, чем FROM-Time.Как сравнить время в android time picker?

+0

Вы должны обратиться: http://stackoverflow.com/questions/5172593/how-to-calculate-the-time-difference-between-two-time-fields-with-respect-to-t/ 11219953 # 11219953 –

+0

Вам необходимо выполнить эту проверку проверки обратных вызовов, предоставленных 'TimePicker'. – guptakvgaurav

+0

@Supreet Если один из ответов решил вашу проблему, вы должны принять ответ, чтобы помочь людям, которые имеют такую ​​же проблему в будущем. –

ответ

0

Вам нужно будет установить onTimeSetListeners для каждого счетчика. В onTimeSet вы получите int hour и int minute. Преобразуйте это в несколько секунд. Затем проверьте, совпадают ли эти два значения. Если они не перекрываются, задайте текстовое значение, например, fromSpinner.setText («10:00 AM»).


EDIT: добавление примерного кода. Вы должны установить следующий onDateSetListener для toTimeSpinner и аналогичный totoTimeSpinner.

private OnDateSetListener onDateSetListener = new OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Date date = makeDateGMT(year, monthOfYear, dayOfMonth); 
     if (date.after(fromTimeDate)) { 
      // We can accept this as a valid toTime 
      toTimeDate = date; 
      // Use simpleDateFormat to format Date 
      toTimeSpinner.setText(formattedDate); 
     } 
    } 
}; 

private void makeDateGMT(int year, int month, int day) { 
    GregorianCalendar calendar = new GregorianCalendar(); 
    calendar.setTimeZone(TIME_ZONE_GMT); 
    calendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute); 
    return calendar.getTime(); 
} 
+0

Я думаю, вы не получаете waht, я имею в виду .... – Supreet

+0

Возможно. Вы не говорите, что хотите убедиться, что TO-Time всегда> FROM-Time? –

+0

да именно это. – Supreet

0

Чтобы получить текущую дату/время, вы просто создаете новый объект Date.

Для сравнения дат, которые вы используете Date.compareTo():

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date now = new Date(); 
int difference = now.compareTo(formatter.parse(data)); 

Согласно документации, разница будет:

значение 0, если аргумент Дата равно этой даты; значение меньше 0, если эта дата предшествует аргументу Date; и значение больше 0, если эта дата после аргумента Date.

if (difference == 0) { 
    // the dates are equal 
} 
else if (difference < 0) { 
    // the date is before now 
} 
else { 
    // the date is after now 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^