开发中有时候需求是要我们判断当前时间是否是是在某个时间段,比如判断某个操作是否是在工作时间(这个时间可以自定义)
只需要写个方法如下:
/** * 判断当前系统时间是否在指定时间的范围内 * <p> * beginHour 开始小时,例如22 * beginMin 开始小时的分钟数,例如30 * endHour 结束小时,例如 8 * endMin 结束小时的分钟数,例如0 * true表示在范围内, 否则false */ public static boolean isCurrentInTimeScope(int beginHour, int beginMin, int endHour, int endMin) { boolean result = false; final long aDayInMillis = 1000 * 60 * 60 * 24; final long currentTimeMillis = System.currentTimeMillis(); Time now = new Time(); now.set(currentTimeMillis); Time startTime = new Time(); startTime.set(currentTimeMillis); startTime.hour = beginHour; startTime.minute = beginMin; Time endTime = new Time(); endTime.set(currentTimeMillis); endTime.hour = endHour; endTime.minute = endMin; // 跨天的特殊情况(比如22:00-8:00) if (!startTime.before(endTime)) { startTime.set(startTime.toMillis(true) - aDayInMillis); result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime Time startTimeInThisDay = new Time(); startTimeInThisDay.set(startTime.toMillis(true) + aDayInMillis); if (!now.before(startTimeInThisDay)) { result = true; } } else { //普通情况(比如 8:00 - 14:00) result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime } return result; }
调用方式为:
if (isCurrentInTimeScope(0,0,8,0)){ //做对应的操作 Toast.makeText(mContext, "早上好!", Toast.LENGTH_SHORT).show(); }
即可!