You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java的TimePicker中设置两个可用时间范围?

实现多时间段的TimeVetoPolicy

嘿,我来帮你搞定这个多时间范围的需求!其实改起来很简单,你只需要把原来的单范围判断,扩展成多个范围的逻辑或(||)判断就可以了——只要时间落在任意一个允许的范围内,就返回true,否则返回false

下面是修改后的完整代码:

public class SampleTimeVetoPolicy implements TimeVetoPolicy { 
    @Override 
    public boolean isTimeAllowed(LocalTime time) { 
        // 第一个允许范围:12:00 - 15:00(包含边界)
        boolean inFirstRange = PickerUtilities.isLocalTimeInRange(time, LocalTime.of(12, 00), LocalTime.of(15, 00), true);
        // 第二个允许范围:19:00 - 23:00(包含边界)
        boolean inSecondRange = PickerUtilities.isLocalTimeInRange(time, LocalTime.of(19, 00), LocalTime.of(23, 00), true);
        // 只要在其中一个范围内就允许
        return inFirstRange || inSecondRange;
    } 
}

代码说明:

  • 把两个时间段的判断拆成独立变量,代码更清晰,后续调整范围或新增时间段也更方便。
  • 保留了你原本使用的PickerUtilities.isLocalTimeInRange方法,第三个参数true表示包含时间段的起始和结束边界(比如12:00、15:00这类时间点允许被选择),如果不需要包含边界,改成false即可。
  • ||逻辑或连接两个判断,只要时间落在任意一个范围内,就会返回true,也就是允许选择该时间。

如果之后需要添加更多可用时间段,只需要继续新增类似的范围判断,再用||连接起来就好,扩展性很强哦!

内容的提问来源于stack exchange,提问作者theMaximumForce

火山引擎 最新活动