5

我的问题是如何比较 startTime 和 endTime 之间的两个时间,

比较两次。

  1. 开始时间
  2. 时间结束。

我正在使用TimePickerDialog获取时间,我正在使用一种方法,它为 startTime 和 endTime 传递 long 等参数,我正在使用这样的方法,

//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 {

}

获取错误:

java.lang.NumberFormatException: Invalid long: "10:52"

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

4

2 回答 2

8

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

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;
    }
}

您还可以比较更大和更少的 startTime 和 endTime。

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;
}
于 2014-11-18T05:47:51.253 回答
0

那这个呢 :

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();
    }
于 2019-05-10T05:19:10.340 回答