【发布时间】:2017-03-02 16:30:52
【问题描述】:
我正在尝试比较 2 天(实际上是 3 天)。在我的用例中,我需要比较 3 个日期。一个是 StartSleepingTime、StopSleepingTime 和 Now。我的应用程序监视用户的活动级别,并且我有一个每半小时运行一次的计划任务,以检查 NOW 是否在用户的 StartSleepingTime 和 StopSleepingTime 之间,以确保在此间隔期间停止活动监控服务。由于用户在我运行计划任务时首次登录时设置了 StartSleepingTime 和 StopSleepingTime,因此与现在相比,两者都将处于“过去”状态。目前我正在尝试仅从 3 个日期中提取小时和分钟信息并进行如下比较:
public static boolean compareHrsAndMintsOnly(Date startSH, Date now, Date stopSH) {
boolean isNowWithinSleepingTime = false;
Calendar startSHCalendar = Calendar.getInstance();
startSHCalendar.setTime(startSH);
Calendar nowCalendar = Calendar.getInstance();
nowCalendar.setTime(now);
Calendar stopSHCalendar = Calendar.getInstance();
stopSHCalendar.setTime(stopSH);
int startSHhour = startSHCalendar.get(Calendar.HOUR_OF_DAY);
int startSHmin = startSHCalendar.get(Calendar.MINUTE);
int nowHour = nowCalendar.get(Calendar.HOUR_OF_DAY);
int nowMin = nowCalendar.get(Calendar.MINUTE);
int stopSHhour = stopSHCalendar.get(Calendar.HOUR_OF_DAY);
int stopSHmin = stopSHCalendar.get(Calendar.MINUTE);
if ((startSHhour > nowHour && startSHmin > nowMin) && (nowHour < stopSHhour && nowMin < stopSHmin)) {
// stop the monitoring service
isNowWithinSleepingTime = true;
}else {
// start the monitoring service
isNowWithinSleepingTime = false;
}
return isNowWithinSleepingTime;
}
但这由于某种原因不起作用。另外,我觉得必须有更好的方法来实现比较。请有任何建议!
【问题讨论】:
标签: java android date calendar