时间比较

sli*_*ing 29 java comparison time

我有时间,hh:mm用户必须以该格式输入.

但是,我想比较时间(例如11:22)是在上午10点到下午6点之间吗?但我如何比较呢?

Ada*_*kin 54

Java(还)没有一个好的内置Time类(它有一个用于JDBC查询,但这不是你想要的).

一种选择是使用JodaTime API和它的本地时间类.

仅使用内置的Java API,您就会遇到java.util.Date.您可以使用SimpleDateFormat来解析时间,然后使用Date比较函数来查看它是在其他时间之前还是之后:

SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date ten = parser.parse("10:00");
Date eighteen = parser.parse("18:00");

try {
    Date userDate = parser.parse(someOtherDate);
    if (userDate.after(ten) && userDate.before(eighteen)) {
        ...
    }
} catch (ParseException e) {
    // Invalid date was entered
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用一些字符串操作,也许是正则表达式来提取小时和分钟部分,将它们转换为数字并进行数值比较:

Pattern p = Pattern.compile("(\d{2}):(\d{2})");
Matcher m = p.matcher(userString);
if (m.matches() ) {
    String hourString = m.group(1);
    String minuteString = m.group(2);
    int hour = Integer.parseInt(hourString);
    int minute = Integer.parseInt(minuteString);

    if (hour >= 10 && hour <= 18) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这完全取决于你想要完成的事情.


ass*_*ias 14

使用Java 8+,您可以使用新的Java时间API:

所以你的问题就像这样简单:

public static void main(String[] args) {
  LocalTime time = LocalTime.parse("11:22");
  System.out.println(isBetween(time, LocalTime.of(10, 0), LocalTime.of(18, 0)));
}

public static boolean isBetween(LocalTime candidate, LocalTime start, LocalTime end) {
  return !candidate.isBefore(start) && !candidate.isAfter(end);  // Inclusive.
}
Run Code Online (Sandbox Code Playgroud)

对于包容性开始但是独占结束(半开),请使用此行.

return !candidate.isBefore(start) && candidate.isBefore(end);  // Exclusive of end.
Run Code Online (Sandbox Code Playgroud)


jjj*_*jjj 5

例:

import java.util.*;   
import java.lang.Object;   
import java.text.Collator;   
public class CurrentTime{   
  public class CurrentTime   
{   
    public static void main( String[] args )   
    {   
        Calendar calendar = new GregorianCalendar();   
        String am_pm;   
        int hour = calendar.get( Calendar.HOUR );   
        int minute = calendar.get( Calendar.MINUTE );   
        // int second = calendar.get(Calendar.SECOND);   
        if( calendar.get( Calendar.AM_PM ) == 0 ){   
            am_pm = "AM";   
            if(hour >=10)   
                System.out.println( "welcome" );   
        }               
        else{   
            am_pm = "PM";   
            if(hour<6)   
                System.out.println( "welcome" );   
        }   

        String time = "Current Time : " + hour + ":" + minute + " " + am_pm;   
        System.out.println( time );    
    }   
}  
Run Code Online (Sandbox Code Playgroud)

资源