【问题标题】:How to compare start time and end time in android?如何比较android中的开始时间和结束时间?
【发布时间】:2015-01-15 05:32:54
【问题描述】:

我的问题是如何比较 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"

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

【问题讨论】:

    标签: android android-timepicker datetime-comparison


    【解决方案1】:

    这个呢:

    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”之后和尝试呈现之前,这个“}”可能是什么。你应该修改你的代码:)。
    【解决方案2】:

    首先,您必须将时间字符串转换为 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;
    }
    

    【讨论】:

    • 上午 12 点和下午 12 点有问题
    • 你试过了吗?可能您必须以 24 小时格式转换时间,因此不会产生问题。 @HeenaArora
    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多