2013-11-29 143 views
1

你好朋友我设置了时间选择器对话框的时间,所以我想检查这个时间是否在特定的时间范围内。检查输入时间在两个时间范围之间android

我的时间范围为上午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实例mCalendarOpeningTimemCalendarClosingTime,为什么不使用它们作为Date实例?这会更有效率,并且可能会让您的代码正常运行。

编辑: -确定..忘了什么上面写的..这是废话..:一段代码,将你想要达到的目标以下,P: -

一起来..设置mCalendarOpeningTimemCalendarClosingTime这样的事情,并呼吁在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

你有任何代码或链接我如何转换日历实例为Date实例,所以我可以有更多的想法吗? –

+0

@HarshalKalavadiya上它..将编辑我的答案时完成.. – d3m0li5h3r

+0

@HarshalKalavadiya ..检查现在.. – 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

你的代码工作正常,但我可以在日历中设置上午/下午值,因为我的时间格式是12小时不是24小时? –

+0

我发现我的解决方案看到** @ d3m0li5h3r **的答案,但我从你的帖子得到提示,所以我也upvote你的答案,谢谢兄弟..为你的努力和时间 –

+0

我认为它可以做到: firstLimit.set (Calendar.AM_PM,日历。上午); –

相关问题