2013-11-29 2 views
1

Привет, друзья. Я установил время из диалогового окна выбора времени, поэтому я хочу проверить, что это время находится между конкретным временем диапазона или нет.Проверить Введите время между двумя временными интервалами в android

My Time Диапазон 11:30 утра до 10:00 вечера

, поэтому я хочу, чтобы проверить, что мой введите время между 11:30 утра до 10:00 вечера или нет.

мой код такой, как показано ниже.

Calendar mCalendarOpeningTime; 
Calendar mCalendarClosingTime; 
Calendar finalTime; 
int hour,min; 
private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int selectedHour, 
      int selectedMinute) { 
     hour = selectedHour; 
     min = selectedMinute; 
     finalTime = Calendar.getInstance(); 
     finalTime.set(Calendar.HOUR_OF_DAY, selectedHour); 
     finalTime.set(Calendar.MINUTE, selectedMinute); 
     mStringGetTime = String.valueOf(DateFormat.format("h:mm aa",finalTime)); 


    } 
}; 

И я установил время открытия и закрытия значения времени, как следовать

mCalendarOpeningTime.set(11,30); 
    mCalendarClosingTime.set(10,00); 

В моей кнопки отправки нажмите я установить следующий код

if(finalTime.after(mCalendarOpeningTime) && finalTime.before(mCalendarClosingTime)) 
        { 
        System.out.println("Your time is in range"); 
        } 
        else 
        { 
         System.out.println("Your time is not in range"); 
        } 

поэтому, когда я представить он печатает сообщение каждый раз, как ваше время не в беге ge любая идея, как я могу ее решить?

ответ

2

Вместо использования Calendar экземпляров для mCalendarOpeningTime и mCalendarClosingTime, почему бы вам не использовать их в качестве Date экземпляров ?? это будет более эффективным и может также привести ваш код в работоспособном состоянии.

EDIT: - нормально .. забыть, Что написано выше .. Это было дерьмо ..: P следующий кусок кода, который будет делать то, что вы хотите достичь: -

Сначала установите .. mCalendarOpeningTime и mCalendarClosingTime что-то вроде этого и называют этот метод в onCreate() или onStart() так, что значения присваиваются соответствующие «времена», прежде чем начать их использовать: -

private void setOpeningAndClosingTimes() { 
    mCalendarOpeningTime = Calendar.getInstance(); 
    mCalendarOpeningTime.set(Calendar.HOUR, 11); 
    mCalendarOpeningTime.set(Calendar.MINUTE, 30); 
    mCalendarClosingTime.set(Calendar.AM_PM, Calendar.AM); 

    mCalendarClosingTime = Calendar.getInstance(); 
    mCalendarClosingTime.set(Calendar.HOUR, 10); 
    mCalendarClosingTime.set(Calendar.MINUTE, 00); 
    mCalendarClosingTime.set(Calendar.AM_PM, Calendar.PM); 
} 

ваше сравнение достаточно хорошо .. попробовать это и дайте мне знать, если это сработало или нет ...

+0

у вас есть какой-либо код или ссылку на то, как я могу конвертировать экземпляров календаря в Дата экземпляров, так что я могу узнать больше об этом? –

+0

@ХаршалКалавадия на нем .. отредактирует мой ответ, когда закончится. – d3m0li5h3r

+0

@ХаршалКалавадия .. проверить сейчас .. – d3m0li5h3r

1

Попробуйте реализовать свой код таким образом!

import java.util.Calendar; 

public class CompareTimestamp 

{

public static void main(String args[]) 
{ 

    Calendar firstLimit= Calendar.getInstance(); 
    firstLimit.set(Calendar.HOUR, 20); 
    firstLimit.set(Calendar.MINUTE, 30); 
    firstLimit.set(Calendar.SECOND, 30); 

    Calendar secondLimit= Calendar.getInstance(); 
    secondLimit.set(Calendar.HOUR, 21); 
    secondLimit.set(Calendar.MINUTE, 30); 
    secondLimit.set(Calendar.SECOND, 30); 



    if(finalTime .after(firstLimit)&&finalTime .before(secondLimit)) 
    { 
     System.out.println("Its dinner time between 8:30 pm and 9:30pm"); 
    } 
    else 
    { 
     System.out.println("No dinner right now"); 
    } 

    } 
    } 

Вы можете спросить, если у вас есть какие-либо дополнительные вопросы :)

+0

ваш код работает нормально, но могу ли я установить AM/PM значение в Calender, потому что мой формат времени составляет 12 часов, а не 24 часа? –

+0

Я нашел свое решение, увидев ответ ** @ d3m0li5h3r **, но я получу подсказку с вашего поста, поэтому я также повышу ваш ответ, спасибо брату .. за ваши усилия и время –

+0

Я думаю, это можно сделать: firstLimit.set (Calendar.AM_PM, Календарь.AM); –

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