如何比较时间范围?

时间:2017-12-05 08:15:05

标签: android android-timepicker

您好我正在尝试比较时间范围,我的要求是当我从时间选择器对话框中选择时间时它应该在给定的时间范围内为此我写下面的代码当我没有从时间选择器中选择12或00时这是有效的对话框

开始时间:06:00 结束时间:23:00 从时间选择器对话框中选择的时间:12:23

以上时间不适合下面的代码可以请一些人帮助我

     String pattern = "hh:mm";                                            
     SimpleDateFormat sdf = new SimpleDateFormat(pattern);
     Date date1 = sdf.parse(startTime);
     Date date2 = sdf.parse(endTime);
     Date date3 = sdf.parse(selectedTime);
     if (((date3.after(date1) || date3.equals(date1)) && (date3.before(date2) || date3.equals(date2)))) {         


     }
     else {
           Toast.makeText(context, "Pickup time should be open and close timings", Toast.LENGTH_SHORT).show();                                         
      }

2 个答案:

答案 0 :(得分:1)

您应该使用 compareTo()

  

如果当前对象较少,则CompareTo方法必须返回负数   如果当前对象大于,则为正数   如果两个对象彼此相等,则为其他对象和零。

代码参考

if (date1.compareTo(date2) < 0)
{
Log.d("RESULT","date1 older than date2"); 
}
else
{
 Log.d("RESULT","date2 older than date1"); 
}

注意

确保 TIME format 是完美的。

答案 1 :(得分:1)

您可以使用以下代码。

 String pattern = "HH:mm";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    try {
        Date date1 = sdf.parse(startTime);
        Date date2 = sdf.parse(endTime);
        Date date3 = sdf.parse(selectedTime);
        if (date3.compareTo(date1) >= 0 && date3.compareTo(date2) <= 0) {
            // Do your stuff
        } else {
            // Wrong time
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

h 表示上午/下午(1-12)小时

H 代表一天中的小时(0-23)

您的约会时间为24小时,因此您应使用 H 而不是 h