如何在安卓系统中比较开始时间和结束时间?

5

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

比较两个时间:

  1. 起始时间
  2. 结束时间

我正在使用 TimePickerDialog 获取时间,并使用一种方法来传递像 long 这样的参数作为 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 {

}

获取错误信息:

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

如何比较两个时间。请给我建议。
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;
}

在12AM和12PM的情况下存在问题。 - Heena Arora
你试过了吗?也许你需要将时间转换为24小时格式,这样就不会出问题了。@HeenaArora - Pratik Dasa

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

在函数“isTimeAfter”之后,try语句之前出现了这个“}”,你应该检查一下你的代码 :)。 - DINA TAKLIT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接