Java与hh:mm的混淆

Java与hh:mm的混淆,java,Java,我的项目提示用户输入格式为hh:mm的字符串。 然后我需要把hh:mm分为小时和分钟,我想我做到了 String Hour = string.substring(0,2); String Minutes = string.substring(3,5); 现在我需要确定时间是从5点开始试着看 当您要求parseInt时,请尝试 String line = "23:59"; String arr [] = line.split(":"); if (Integer.pars

我的项目提示用户输入格式为hh:mm的字符串。 然后我需要把hh:mm分为小时和分钟,我想我做到了

String Hour = string.substring(0,2);
String Minutes = string.substring(3,5);
现在我需要确定时间是从5点开始试着看


当您要求
parseInt
时,请尝试

    String line = "23:59";

    String arr [] = line.split(":");
    if (Integer.parseInt(arr[0]) < 5 || Integer.parseInt(arr[0]) >= 22) {
        System.out.println("wrong hour");
    }
stringline=“23:59”;
字符串arr[]=line.split(“:”);
if(Integer.parseInt(arr[0])<5 | | Integer.parseInt(arr[0])>=22{
System.out.println(“错误的时间”);
}
String::split
通常,要将字符串拆分为多个部分,请使用命令。请参阅问题以进行更多讨论

String[] parts = "07:11".split( ":" );
数组.toString(部分):[07,11]

但我不建议你采用这种方法。继续读下去

LocalTime
Java为您提供了一个专门构建的类:。此类表示一天中没有日期和时区的时间。时钟是一个单一的通用24小时制,它忽略了异常情况,例如

您的输入,如
07:11
恰好符合标准格式。默认情况下,java.time类在解析或生成表示日期时间值的字符串时使用这些格式。因此,无需指定格式化模式

LocalTime localTime = LocalTime.parse( "07:11" );
从那里你可以询问小时部分或分钟部分

int hourOfDay = localTime.getHour();
int minuteOfHour = localTime.getMinute();
但你真正的目标是比较时间,看看它是否在上午5点到晚上10点之间。例如,这是真的吗:
5am<07:11<10pm
。所以没有必要把时间撕成碎片。相反,使用
LocalTime
类,以更直接、更自我记录的方式进行比较

LocalTime start = LocalTime.of( 5 , 0 );  //  5 AM = 05:00.
LocalTime stop = LocalTime.of( 22 , 0 );  // 10 PM = 22:00.

Boolean isBetween = 
    ( ! localTime.isBefore( start ) ) 
    && 
    localTime.isBefore( stop ) 
;
看这个

关于该比较声明:

  • 第一部分问“我们的目标是在开始时还是在开始后?”。一个简短的问题是,“我们的目标不是在开始之前吗?”。如果“notbefore”,那么从逻辑上讲,它必须正好是on或after
  • 第二部分询问我们的目标是否在止损点之前,而不是“等于或之前”。这意味着我们正在使用半开放的方法来定义时间跨度。在半开放式中,开始是包含的,而结束是独占的。这通常用于日期时间工作。我相信在整个代码库和业务逻辑中始终如一地使用它可以消除由于时间跨度而产生的许多混乱和歧义

Javascript!=JAVA(我已经为您修复了问号。)示例输入是什么,如果你用相等的字符串格式使用这些数据,最简单的方法是在0小时以内加上代码< >代码> 10。@ Survivr有三个答案供你考虑,以支持和/或接受现在我需要确保这个小时是从5个麻烦的旧日期时间类,如和
java.text.SimpleTextFormat
现在被类取代。
LocalTime start = LocalTime.of( 5 , 0 );  //  5 AM = 05:00.
LocalTime stop = LocalTime.of( 22 , 0 );  // 10 PM = 22:00.

Boolean isBetween = 
    ( ! localTime.isBefore( start ) ) 
    && 
    localTime.isBefore( stop ) 
;