Android判断当前时间是否在某个时间段

开发中有时候需求是要我们判断当前时间是否是是在某个时间段,比如判断某个操作是否是在工作时间(这个时间可以自定义)

只需要写个方法如下:

/**
 * 判断当前系统时间是否在指定时间的范围内
 * <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();
}

即可!

猜你喜欢

转载自blog.csdn.net/qq_42618969/article/details/105725203