Android 两个计时器比较

Android 两个计时器比较,android,alarmmanager,datetimepicker,android-jobscheduler,Android,Alarmmanager,Datetimepicker,Android Jobscheduler,因此,我允许用户选择两个日期开始和结束时间,并连接到通知方法,该方法将检查当前时间是否介于他选择的时间之间。然而,比较似乎并没有返回正确的结果。 以下是brodcatreceiver中的方法: public void CheackAlarmAllow(){ SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); FinalTime = Calendar.getInstance(); FinalTim

因此,我允许用户选择两个日期开始和结束时间,并连接到通知方法,该方法将检查当前时间是否介于他选择的时间之间。然而,比较似乎并没有返回正确的结果。 以下是
brodcatreceiver
中的方法:

    public void CheackAlarmAllow(){
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
    FinalTime = Calendar.getInstance();
    FinalTime.get(Calendar.HOUR);
    FinalTime.get(Calendar.MINUTE);
    FinalTime.get(Calendar.SECOND);
    FinalTimeS = dateFormat.format (FinalTime.getTime());


    DatabaseHelper db = new DatabaseHelper(this);
    ProfileHelper response = db.getNotification();

    try {
        FirstTime = dateFormat.parse (response.StartTimePicker);
        SecondTime = dateFormat.parse (response.EndimePicker);
        FinalTimeD = dateFormat.parse (FinalTimeS);


    }catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    if(FinalTimeD.after(FirstTime)&& FinalTime.before(SecondTime))
    {
        Log.w("Not Allowed","Working");
    }
    else
    {
        Log.w("FirstTime", String.valueOf(FirstTime));
        Log.w("Second", String.valueOf(SecondTime));
        Log.w("Final", String.valueOf(FinalTimeD));
        Log.w(" Allowed","Working");
        createNotification();
    }
}
在这里,日志返回

06-03 08:14:10.597 30078-7708/com.ahmad.Project W/FirstTime: Thu Jan 01 
03:00:00 MST 1970

06-03 08:14:10.598 30078-7708/com.ahmad. Project W/Second: Thu Jan 01 
10:00:00 MST 1970

06-03 08:14:10.598 30078-7708/com.ahmad. Project W/Final: Thu Jan 01 
08:14:00 MST 1970

06-03 08:14:10.598 30078-7708/com.ahmad. Project W/ Allowed: Working
由于
FirstTime
SeconfTime
类型为
Date
Calendar.after()
仅当传递的参数类型为
Calendar
时,才会返回
true
,因此您的if检查
if(FinalTimeD.after(FirstTime)和&FinalTime.before(SecondTime))
失败 从
日历。after()的-

public boolean after(Object when)返回此日历 表示指定对象表示的时间之后的时间。 此方法相当于:
compareTo(when)>0当且仅当when是日历实例时。否则,该方法返回false

编辑(复制下面注释中的代码片段以确保完整性)

由于
FirstTime
SeconfTime
类型为
Date
Calendar.after()
仅当传递的参数类型为
Calendar
时,才会返回
true
,因此您的if检查
if(FinalTimeD.after(FirstTime)和&FinalTime.before(SecondTime))
失败 从
日历。after()的-

public boolean after(Object when)返回此日历 表示指定对象表示的时间之后的时间。 此方法相当于:
compareTo(when)>0当且仅当when是日历实例时。否则,该方法返回false

编辑(复制下面注释中的代码片段以确保完整性)


好吧,酷,那我得把它们再转换成日历了。我该怎么做呢看看:和
Calendar=Calendar.getInstance()
datenewdate=calendar.setTime(日期)所以我添加了这一行Calendar CFirstTime=Calendar.getInstance();CFirstTime.setTime(第一次);然而,它给出了一个错误,错误是:(90,30)错误:不兼容的类型:日历无法转换为DatePerfect,我只是在顶部初始化了它,它工作了。谢谢Zakirok很酷,然后我必须再次将它们转换为日历。我该怎么做呢看看:和
Calendar=Calendar.getInstance()
datenewdate=calendar.setTime(日期)所以我添加了这一行Calendar CFirstTime=Calendar.getInstance();CFirstTime.setTime(第一次);然而,它给出了一个错误,错误是:(90,30)错误:不兼容的类型:日历无法转换为DatePerfect,我只是在顶部初始化了它,它工作了。谢谢你,扎克
Calendar calendar = Calendar.getInstance(); 
Date newDate = calendar.setTime(date);