有人能帮我创建Java代码来检查时间,并在一天中的特定时间之间将布尔值设置为false吗

wqnecbli  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(100)

基本上就像标题所说的,我试图在一天中的特定时间内将布尔值更改为false,我正在java中尝试。

import java.text.DateFormat;
import java.time.Clock;
import java.time.Duration;

public class timeLock {

    public static void main(String[] args) {
        boolean lock = false;
        Duration myTimeOffset = Duration.ofHours(3);
        Clock OD = Clock.systemUTC();
        Clock OrderTime = Clock.offset(OD, myTimeOffset);
        System.out.println(OrderTime.instant());
    }
}

这是我所有的代码,到目前为止,我遇到的问题是,时钟的格式不适用于if语句,所以我的目标是,找到一种方法,把它格式化成,if语句可读的格式,这样布尔值就变成了真。

des4xlb0

des4xlb01#

你已经说过你想知道当前时间是否在一天中的两个小时之间,如果它在当地时间早上6点到下午4点之间,下面的代码将变量isInTimeRange设置为true,否则设置为false:

LocalTime start = LocalTime.parse("06:00:00");
LocalTime end = LocalTime.parse("16:00:00");
LocalTime now = LocalTime.now();
boolean isInTimeRange = start.isBefore(now) && now.isBefore(end);

这利用了LocalTime类,该类表示没有时区的时间。

2g32fytz

2g32fytz2#

搜索几秒钟就能找到正确的位置,因此为了便于将来参考,我和其他许多人请求您在提问之前花一些时间自己寻找答案。许多人还请求您遵循proper naming conventions,因为它使您的代码更易于阅读和理解
但是对于您的问题的答案,java.time.LocalDateTime类可能会有所帮助。通过它,您可以使用LocalDateTime.now().getHour()获取用户计算机上的当前小时。该方法以int的形式返回小时,其中0表示12am,23表示11pm。我在下面包含了一些示例代码,以帮助您更好地理解如何使用它来解决问题

import java.time.LocalDateTime;

public class Main {
    
    public static void main(String[] args) {
        
        int[] hourRange = {10, 14}; // Hour range 10am to 2pm
        
        // If low range is above high range then swap them
        if (hourRange[1] < hourRange[0]) {
            int tmp = hourRange[0];
            hourRange[0] = hourRange[1];
            hourRange[1] = tmp;
        }
        
        int currentHour = LocalDateTime.now().getHour(); // Get the current hour in 24 hour time (https://www.onlineconversion.com/date_12-24_hour.htm)
        boolean lock = currentHour > hourRange[0] && currentHour < hourRange[1]; // Check if it's inside of the range. If it is then the bool will be true, otherwise false
        System.out.println(lock);
        
    }

}

相关问题