两种TimePickers比较
Two TimePickers comparison
所以我允许用户选择两个日期开始和结束时间,并连接到通知方法,该方法将检查当前时间是否在他选择的时间范围内。然而,比较似乎 return 不是正确的结果。
下面是 BrodcatRecevier
里面的方法:
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();
}
}
这里是日志 returns。
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
您的 if 检查 if(FinalTimeD.after(FirstTime)&& FinalTime.before(SecondTime))
失败,因为 FirstTime
和 SeconfTime
属于 Date
和 Calendar.after()
returns true
类型仅当传递的参数是 Calendar
类型时
来自 Calender.after()
的 Oracle documentation:-
public boolean after(Object when) Returns whether this Calendar
represents a time after the time represented by the specified Object.
This method is equivalent to:
compareTo(when) > 0 if and only if when is a Calendar instance. Otherwise, the method returns false.
编辑(为了完整起见,从下面的评论中复制代码片段)
Calendar calendar = Calendar.getInstance();
Date newDate = calendar.setTime(date);
所以我允许用户选择两个日期开始和结束时间,并连接到通知方法,该方法将检查当前时间是否在他选择的时间范围内。然而,比较似乎 return 不是正确的结果。
下面是 BrodcatRecevier
里面的方法:
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();
}
}
这里是日志 returns。
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
您的 if 检查 if(FinalTimeD.after(FirstTime)&& FinalTime.before(SecondTime))
失败,因为 FirstTime
和 SeconfTime
属于 Date
和 Calendar.after()
returns true
类型仅当传递的参数是 Calendar
类型时
来自 Calender.after()
的 Oracle documentation:-
public boolean after(Object when) Returns whether this Calendar represents a time after the time represented by the specified Object. This method is equivalent to:
compareTo(when) > 0 if and only if when is a Calendar instance. Otherwise, the method returns false.
编辑(为了完整起见,从下面的评论中复制代码片段)
Calendar calendar = Calendar.getInstance();
Date newDate = calendar.setTime(date);