如何比较当前时间与时间范围?

LA_*_*LA_ 8 java time

我有两个String变量 - time1time2.两者都包含格式为HH:MM的值.我该怎么检查:

  1. 如果当前时间在time1和之内 time2?
  2. time1 会在最近的一小时内发生吗?

UPD. 我已经实现了以下转换time1Date格式.但它使用折旧方法:

Date clTime1 = new Date();

SimpleDateFormat timeParser = new SimpleDateFormat("HH:mm", Locale.US);
try {
  clTime1 = timeParser.parse(time1);
} catch (ParseException e) {
}

Calendar now = Calendar.getInstance();
clTime1.setYear(now.get(Calendar.YEAR) - 1900);
clTime1.setMonth(now.get(Calendar.MONTH));
clTime1.setDate(now.get(Calendar.DAY_OF_MONTH));
System.out.println(clTime1.toString());
Run Code Online (Sandbox Code Playgroud)

Cas*_*mer 24

  • 将两个字符串转换为Date 对象(也是时间对象)创建一个新Date对象.
  • 这将包含当前时间.
  • 使用Date.before()和Date.after()方法确定您是否在时间间隔内.

编辑:你应该能够直接使用它(并没有弃用的方法)

public static final String inputFormat = "HH:mm";

private Date date;
private Date dateCompareOne;
private Date dateCompareTwo;

private String compareStringOne = "9:45";
private String compareStringTwo = "1:45";

SimpleDateFormat inputParser = new SimpleDateFormat(inputFormat, Locale.US);

private void compareDates(){
    Calendar now = Calendar.getInstance();

    int hour = now.get(Calendar.HOUR);
    int minute = now.get(Calendar.MINUTE);

    date = parseDate(hour + ":" + minute);
    dateCompareOne = parseDate(compareStringOne);
    dateCompareTwo = parseDate(compareStringTwo);

    if ( dateCompareOne.before( date ) && dateCompareTwo.after(date)) {
        //yada yada
    }
}

private Date parseDate(String date) {

    try {
        return inputParser.parse(date);
    } catch (java.text.ParseException e) {
        return new Date(0);
    }
}
Run Code Online (Sandbox Code Playgroud)


kin*_*iva 5

这就是我使用的简单函数,它对我有用:

public static boolean isTimeWith_in_Interval(String valueToCheck, String startTime, String endTime) {
    boolean isBetween = false;
    try {
        Date time1 = new SimpleDateFormat("HH:mm:ss").parse(startTime);

        Date time2 = new SimpleDateFormat("HH:mm:ss").parse(endTime);

        Date d = new SimpleDateFormat("HH:mm:ss").parse(valueToCheck);

        if (time1.before(d) && time2.after(d)) {
            isBetween = true;
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return isBetween;
}
Run Code Online (Sandbox Code Playgroud)