2016-03-02 5 views
0

В моем приложении у меня есть настройка 2 TimePickers внутри моей активности. Это в настоящее время, как я получаю значения от 2 TimePickers:Получение значений из 2 TimePickers и их сравнение

int hour1 = mFirstWakeUpTimePicker.getCurrentHour(); 
int min1 = mFirstWakeUpTimePicker.getCurrentMinute(); 
int hour2 = mSecondWakeUpTimePicker.getCurrentHour(); 
int min2 = mSecondWakeUpTimePicker.getCurrentMinute(); 

GregorianCalendar calendar1 = new GregorianCalendar(); 
GregorianCalendar calendar2 = new GregorianCalendar(); 

calendar1.set(Calendar.HOUR_OF_DAY, hour1); 
calendar1.set(Calendar.MINUTE, min1); 
calendar2.set(Calendar.HOUR_OF_DAY, hour2); 
calendar2.set(Calendar.MINUTE, min2); 

После этого, мне нужно, чтобы сравнить их, чтобы проверить, если они, по крайней мере, 3 минуты друг от друга. Как мне это достичь? Кроме того, какой способ записи этого кода лучше?

Любая помощь приветствуется.

ответ

1

Предполагая, что вы хотите calendar2 поздно, чем три минуты, в отношении Calendar1 вы можете сделать так, сразу после получения часов и минут от Timepickers:

GregorianCalendar calendar1 = new GregorianCalendar(); 
GregorianCalendar calendar2 = new GregorianCalendar(); 

calendar1.set(Calendar.HOUR_OF_DAY, hour1); 
calendar1.set(Calendar.MINUTE, min1); 
calendar2.set(Calendar.HOUR_OF_DAY, hour2); 
calendar2.set(Calendar.MINUTE, min2); 

long millisCal1 = calendar1.getTimeInMillis(); 
long millisCal2 = calendar2.getTimeInMillis(); 

if (millisCal2 - millisCal1 >= 1000 * 60 * 3){ 
    // They differ of at least three mins 
} else { 
    // They not differ of at least three mins 
} 

Где три минуты переводится в Millis 1000 * 60 * 3. Если вы хотите проверить calendar1 позже calendar2, просто переключите порядок внутри оператора if.

Bye

+0

Благодарим за информацию. Я это понимаю, и теперь я могу заставить его работать. – aresz

0

Если у вас есть две даты, вы можете проверить это с помощью следующих условий:

если (calendar1.isBefore (calendar2)) {// условия здесь }

и вы можете также проверьте то же самое для isAfter

OR Если вы хотите проверить, что по крайней мере 3 минуты, добавьте даты, а затем выполните их как:

Календарь calendar = Calendar.getInstance(); calendar.setTime (dat1); calendar.add (Calendar.MINUTE, dat2);

Попробуйте это и дайте мне знать, если это поможет.

1

можно сравнить с Calendar1 calendar2 с помощью метода "calendar.getTimeInMillis()", следующим образом:

ИНТ минут = (INT) ((calendar2.getTimeInMillis() - calendar1.getTimeInMillis())/(1000 * 60));