gpt4 book ai didi

java - 在 Java 中检查其他两个日期之间的日期时得到不正确的结果

转载 作者:行者123 更新时间:2023-11-29 06:49:04 27 4
gpt4 key购买 nike

我正在使用下面的代码来检查一个小时是否在另外两个特定时间之间:

String openHour = "08:00 AM";
String currentHour = "10:00 PM";
String closeHour = "11:00 PM"; //Change to 02:00 AM doesn't work!!!

SimpleDateFormat format = new SimpleDateFormat("hh:mm a");
Date openHourDate = format.parse(openHour);
Date currentHourDate = format.parse(currentHour);
Date closeHourDate = format.parse(closeHour);

Calendar openCalendar = Calendar.getInstance();
openCalendar.setTime(openHourDate);

Calendar currentCalendar = Calendar.getInstance();
currentCalendar.setTime(currentHourDate);

Calendar closeCalendar = Calendar.getInstance();
closeCalendar.setTime(closeHourDate);

Date open = openCalendar.getTime();
Date current = currentCalendar.getTime();
Date close = closeCalendar.getTime();

if (current.after(open) && current.before(close)) {
System.out.println("Correct!");
} else {
System.out.println("Incorrect!");
}

如果 currentHour"10:00 PM" 正如您在我的代码中看到的那样,一切正常,但如果我将其更改为 "02 :00 AM",即使 currentHour 介于 08:00 AM02:00 AM< 之间,代码也不会按预期工作。如何解决?

最佳答案

这是一个使用 LocalTime 的解决方案它还可以正确处理午夜后的当前时间和关闭时间。

String openHour = "08:00 AM";
String currentHour = "01:00 PM";
String closeHour = "02:00 AM";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "hh:mm a" , Locale.US );
LocalTime openTime = LocalTime.parse(openHour, formatter);
LocalTime currentTime = LocalTime.parse(currentHour, formatter);
LocalTime closeTime = LocalTime.parse(closeHour, formatter);

boolean isOpen = false;
if (closeTime.isAfter(openTime)) {
if (openTime.isBefore(currentTime) && closeTime.isAfter(currentTime)) {
isOpen = true;
}
} else if (currentTime.isAfter(openTime) || currentTime.isBefore(closeTime)) {
isOpen = true;
}

if (isOpen) {
System.out.println("We are open");
} else {
System.out.println("We are closed");
}

关于java - 在 Java 中检查其他两个日期之间的日期时得到不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55599273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com