My God My God - 6 months ago 93
Android Question

Check if a given time lies between two times regardless of date

I have timespans:


String time1 = 01:00:00

String time2 = 05:00:00


I want to check if time1 and time2 both lies between
20:11:13 and 14:49:00
.

Actually,
01:00:00
is greater than
20:11:13
and less than
14:49:00
considering
20:11:13
is always less than
14:49:00
. This is given prerequisite.

So what I want is,
20:11:13 < 01:00:00 < 14:49:00
.

So I need something like that:

public void getTimeSpans()
{
boolean firstTime = false, secondTime = false;

if(time1 > "20:11:13" && time1 < "14:49:00")
{
firstTime = true;
}

if(time2 > "20:11:13" && time2 < "14:49:00")
{
secondTime = true;
}
}


I know that this code does not give correct result as I am comparing the string objects.

How to do that as they are the timespans but not the strings to compare?

Answer

You can use the Calendar class in order to check.

For example:

try {
    String string1 = "20:11:13";
    Date time1 = new SimpleDateFormat("HH:mm:ss").parse(string1);
    Calendar calendar1 = Calendar.getInstance();
    calendar1.setTime(time1);

    String string2 = "14:49:00";
    Date time2 = new SimpleDateFormat("HH:mm:ss").parse(string2);
    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTime(time2);
    calendar2.add(Calendar.DATE, 1);

    String someRandomTime = "01:00:00";
    Date d = new SimpleDateFormat("HH:mm:ss").parse(someRandomTime);
    Calendar calendar3 = Calendar.getInstance();
    calendar3.setTime(d);
    calendar3.add(Calendar.DATE, 1);

    Date x = calendar3.getTime();
    if (x.after(calendar1.getTime()) && x.before(calendar2.getTime())) {
        //checkes whether the current time is between 14:49:00 and 20:11:13.
        System.out.println(true);
    }
} catch (ParseException e) {
    e.printStackTrace();
}
Comments