java - 如何计算两次休息一天之间的时间?

标签 java android

我有一个“请勿打扰”系统,如果当前时间在“请勿打扰”范围内,该系统会静音我的 Android 应用程序的声音。 如果我使用一天之间的范围时间,效果很好,但我不知道如何在一天休息时写它,例如晚上 11:00 到第二天凌晨 1:00。

这是我用来检测免打扰时间的方法:

private boolean isInDNDTime() {
    Calendar now = Calendar.getInstance();
    Calendar startTime = Calendar.getInstance();
    Calendar endTime = Calendar.getInstance();
    MyDate myDate = new MyDate(new Date());

    if (isDNDTwoDays()) {
        startTime.setTime(myDate.getYesterday().toDate());
        startTime.set(Calendar.HOUR_OF_DAY, getDNDStartHourTime());
        startTime.set(Calendar.MINUTE, getDNDStartMinuteTime());

        endTime.setTime(myDate.getTomorrow().toDate());
        endTime.set(Calendar.HOUR_OF_DAY, getDNDEndHourTime());
        endTime.set(Calendar.MINUTE, getDNDEndMinuteTime());

    } else {
        startTime.set(Calendar.HOUR_OF_DAY, getDNDStartHourTime());
        startTime.set(Calendar.MINUTE, getDNDStartMinuteTime());

        endTime.set(Calendar.HOUR_OF_DAY, getDNDEndHourTime());
        endTime.set(Calendar.MINUTE, getDNDEndMinuteTime());
    }

    return now.after(startTime) && now.before(endTime);
}

最佳答案

请尝试下面的代码

 private boolean isInDNDTime() {
        Calendar now = Calendar.getInstance();
        Calendar startTime = Calendar.getInstance();
        Calendar endTime = Calendar.getInstance();
        MyDate myDate = new MyDate(new Date());

        if (isDNDTwoDays()) {
            startTime.add(Calendar.DATE, 1);
            endTime.add(Calendar.DATE, 1);

           // startTime.setTime(myDate.getYesterday().toDate());
            startTime.set(Calendar.HOUR_OF_DAY, getDNDStartHourTime());
            startTime.set(Calendar.MINUTE, getDNDStartMinuteTime());

           // endTime.setTime(myDate.getTomorrow().toDate());
            endTime.set(Calendar.HOUR_OF_DAY, getDNDEndHourTime());
            endTime.set(Calendar.MINUTE, getDNDEndMinuteTime());

        } else {
            startTime.set(Calendar.HOUR_OF_DAY, getDNDStartHourTime());
            startTime.set(Calendar.MINUTE, getDNDStartMinuteTime());

            endTime.set(Calendar.HOUR_OF_DAY, getDNDEndHourTime());
            endTime.set(Calendar.MINUTE, getDNDEndMinuteTime());
        }

        return now.after(startTime) && now.before(endTime);
    }

关于java - 如何计算两次休息一天之间的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60320820/

相关文章:

java - JPL textToTerm 只产生匿名变量

java - RObject.isExists() 检查内存还是服务器?

java - AccessibilityNodeInfo in getRoot ActiveWindow : Perform click fails with Rect() not contains X, Y坐标

android - 在 EditText 中设置日期时出错

java - 如何正确序列化/反序列化Java Object[]?

java - 如何在 Java 中选择 getter 和 setter

java - 为什么我可以像基元一样测试包装器的不平等?我可以为我创建的类(class)执行此操作吗?

android - 触摸任意位置以继续

android - 旋转动画,放慢速度

android - ASyncTask、隐藏 fragment 、保留实例和屏幕方向变化