如何在android中比较开始时间和结束时间?

如何在android中比较开始时间和结束时间?,android,android-timepicker,datetime-comparison,Android,Android Timepicker,Datetime Comparison,我的问题是如何比较开始时间和结束时间之间的时间 比较两次 开始时间 结束时间 我使用TimePickerDialog来获取时间,我使用一种方法来传递参数,如long for startTime和endTime,我使用如下方法 //Method: boolean isTimeAfter(long startTime, long endTime) { if (endTime < startTime) { return false; } else {

我的问题是如何比较开始时间和结束时间之间的时间

比较两次

  • 开始时间
  • 结束时间
  • 我使用
    TimePickerDialog
    来获取时间,我使用一种方法来传递参数,如long for startTime和endTime,我使用如下方法

    //Method:
    boolean isTimeAfter(long startTime, long endTime) {
        if (endTime < startTime) {
            return false;
        } else {
            return true;
        }
    }
    
    String strStartTime = edtStartTime.getText().toString();
    String strEndTime = edtEndTime.getText().toString();
    
    long lStartTime = Long.valueOf(strStartTime);
    long lEndTime = Long.valueOf(strEndTime);
    
    if (isTimeAfter(lStartTime, lEndTime)) {
    
    } else {
    
    }
    

    如何比较两次。请建议我。

    首先,您必须将时间字符串转换为SimpleDataFormat,如下所示:

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    Date inTime = sdf.parse(strStartTime);
    Date outTime = sdf.parse(strEndTime);
    
    if (isTimeAfter(inTime, outTime)) {
    
    } else {
    
    }
    
    boolean isTimeAfter(Date startTime, Date endTime) {
        if (endTime.before(startTime)) { //Same way you can check with after() method also.
            return false;
        } else {
            return true;
        }
    }
    
    然后按如下方式调用您的方法:

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    Date inTime = sdf.parse(strStartTime);
    Date outTime = sdf.parse(strEndTime);
    
    if (isTimeAfter(inTime, outTime)) {
    
    } else {
    
    }
    
    boolean isTimeAfter(Date startTime, Date endTime) {
        if (endTime.before(startTime)) { //Same way you can check with after() method also.
            return false;
        } else {
            return true;
        }
    }
    
    您还可以比较开始时间和结束时间的长短。

    int dateDelta = inTime.compareTo(outTime);
     switch (dateDelta) {
        case 0:
              //startTime and endTime not **Equal**
        break;
        case 1:
              //endTime is **Greater** then startTime 
        break;
        case -1:
              //startTime is **Greater** then endTime
        break;
    }
    
    那么这个呢:

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    
     public static boolean isTimeAfter(Date startTime, Date endTime) {
                return !endTime.before(startTime);
            }
        }
    
    try {
            Date inTime = sdf.parse(mEntryTime);
            Date outTime = sdf.parse(mExitTime);
            if (Config.isTimeAfter(inTime, outTime)) {
                //Toast.makeText(AddActivity.this, "Time validation success", Toast.LENGTH_LONG).show();
            } 
            else {
                Toast.makeText(AddActivity.this, "Exit time must be greater then entry time", Toast.LENGTH_LONG).show();
            }
        } catch (ParseException e) {
            e.printStackTrace();
            //Toast.makeText(AddActivity.this, "Parse error", Toast.LENGTH_LONG).show();
        }
    

    在上午12点和下午12点的情况下会出现问题。您尝试过吗?可能您必须将时间转换为24小时格式,这样不会产生问题@HeenaArorawhat可以是函数“isTimeAfter”之后和try present之前的“}”。您应该重新查看代码:)。