将两个时间值与系统当前时间进行比较

compare two time values with system current time

我正在创建一个简单的考勤应用我想获取系统的当前时间,如果当前时间在 8 a.m 到下午 3 点之间,则将值设置为 "Morning"。下面是我的代码,我在日历 class 的 'before' 和 'after' 方法中遇到错误。请告诉我正确的使用方法。

try {
        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss a");
        String currentTime = sdf.format(c.getTime());

        // start time
         String lwrLimit = " 08:30:00 AM";  
        java.util.Date time_1 = new SimpleDateFormat("HH:mm:ss").parse(lwrLimit);
        Calendar calendar_1 = Calendar.getInstance();
        calendar_1.setTime(time_1);

        // end time
        String  uprLimit  = " 03:59:59 PM";  
        java.util.Date time_2 = new SimpleDateFormat("HH:mm:ss").parse(uprLimit);
        Calendar calendar_2 = Calendar.getInstance();
        calendar_2.setTime(time_2);

     if (currentTime.after(time_1) && currentTime.before(time_2)) 
          {
             ed_shift.setText( "Morning");
          }


    } catch (java.text.ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} 

根据您的代码,在 java.lang.String class 中查找 before 和 after 方法,因为 currentTime 在开始时被定义为字符串。

这样检查

   Calendar presentDate = Calendar.getInstance();

    Calendar startDate = Calendar.getInstance();
    startDate.set(Calendar.HOUR_OF_DAY, 8);
    startDate.set(Calendar.MINUTE, 30);
    startDate.set(Calendar.SECOND, 0);

    Calendar endDate = Calendar.getInstance();
    endDate.set(Calendar.HOUR_OF_DAY, 15);
    endDate.set(Calendar.MINUTE, 0);
    endDate.set(Calendar.SECOND, 0);

    if (presentDate.after(startDate) && presentDate.before(endDate)) {
        // set morning here
    } else {
        // set your data here
    }