gpt4 book ai didi

java - 如何在JAVA中找到我当前的时间在今天的时间和明天的日期之间

转载 作者:行者123 更新时间:2023-12-02 09:13:48 26 4
gpt4 key购买 nike

我正在尝试确定当前时间是否为19:30:00 是在 19:00:00 和第二天 03:00:00 之间,但我的代码失败了。我的代码在这种情况下失败我可以使用日期来表示露营时间吗?如果可以,请告诉我如何操作

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class DateUtils {

// format 24hre ex. 12:12 , 17:15
private static String HOUR_FORMAT = "HH:mm";

private DateUtils() { }

public static String getCurrentHour() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdfHour = new SimpleDateFormat(HOUR_FORMAT);
String hour = sdfHour.format(cal.getTime());
return hour;
}

/**
* @param target hour to check
* @param start interval start
* @param end interval end
* @return true true if the given hour is between
*/
public static boolean isHourInInterval(String target, String start, String end) {
return ((target.compareTo(start) >= 0)
&& (target.compareTo(end) <= 0));
}

/**
* @param start interval start
* @param end interval end
* @return true true if the current hour is between
*/
public static boolean isNowInInterval(String start, String end) {
return DateUtils.isHourInInterval
(DateUtils.getCurrentHour(), start, end);
}

// TEST
public static void main (String[] args) {
String now = DateUtils.getCurrentHour();
String start = "14:00";
String end = "14:26";
System. out.println(now + " between " + start + "-" + end + "?");
System. out.println(DateUtils.isHourInInterval(now,start,end));
/*
* output example :
* 21:01 between 14:00-14:26?
* false
*
*/
}
}

最佳答案

java.time.LocalTime 是你的 friend 。下面是一个简单的例子,当然可以做得更短一些。

void test(){
var tz = ZoneId.of("CET");
var anyDate = LocalDate.of(2019,12,4);

var x = ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(18,59)),tz).toInstant();

System.out.println(testTime(Clock.fixed( ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(18,59)),tz).toInstant(),tz)));
System.out.println(testTime(Clock.fixed( ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(19,01)),tz).toInstant(),tz)));
System.out.println(testTime(Clock.fixed( ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(00,00)),tz).toInstant(),tz)));
System.out.println(testTime(Clock.fixed( ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(02,59)),tz).toInstant(),tz)));
System.out.println(testTime(Clock.fixed( ZonedDateTime.of(LocalDateTime.of(anyDate, LocalTime.of(03,01)),tz).toInstant(),tz)));
}

boolean testTime(Clock clock){
var evening =LocalTime.of(19,00);
var midnight =LocalTime.of(00,00);
var night =LocalTime.of(03,00);

LocalTime wallTime = LocalTime.now(clock);

return (wallTime.isAfter(evening) && wallTime.isBefore(midnight.minusNanos(1))) || (midnight.isBefore(wallTime) && wallTime.isBefore(night)) || wallTime.equals(midnight);

}

关于java - 如何在JAVA中找到我当前的时间在今天的时间和明天的日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59174490/

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