Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中比较两次?_Java_Android_Date_Time - Fatal编程技术网

Java 如何在android中比较两次?

Java 如何在android中比较两次?,java,android,date,time,Java,Android,Date,Time,我想在我的android应用程序中比较两次(时间戳)。 下面是我的函数,用于检查当前时间是否在两个给定时间之间 private boolean isBetween(String t1, String t2, String target){ boolean result = false; try{ Date time1 = new SimpleDateFormat("HH:mm:ss").parse(t1); Calendar calendar1

我想在我的android应用程序中比较两次(时间戳)。 下面是我的函数,用于检查当前时间是否在两个给定时间之间

private boolean isBetween(String t1, String t2, String target){
    boolean result = false;
    try{

        Date time1 = new SimpleDateFormat("HH:mm:ss").parse(t1);
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(time1);


        Date time2 = new SimpleDateFormat("HH:mm:ss").parse(t2);
        Calendar calendar2 = Calendar.getInstance();
        calendar2.setTime(time2);
        calendar2.add(Calendar.DATE, 1);


        Date d = new SimpleDateFormat("HH:mm:ss").parse(target);
        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())) {
            result = true;
            //checkes whether the current time is between 14:49:00 and 20:11:13.

            //Toast.makeText(UserCheckout.this, "The time is between", Toast.LENGTH_SHORT).show();
        }
    }
    catch (ParseException e){
        result = false;
        Toast.makeText(UserCheckout.this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    return result;
}
下面是我如何使用这个函数

if (isBetween("19:00:00", "20:00:00", currentTime)){
    Toast.makeText(this, "Time is  between 7 and 8", Toast.LENGTH_SHORT).show();
}

if (isBetween("20:00:00", "21:00:00", currentTime)){
    Toast.makeText(this, "Time is between 8 and 9", Toast.LENGTH_SHORT).show();
}
但我得到的结果都是真的。

通过打电话:

calendar2.add(Calendar.DATE, 1);
calendar3.add(Calendar.DATE, 1);
您正在为这些日期添加一天。您正在检查您的“目标”日期(按天转置)是否在“19:00:00”和“20:00:00(明天)”之间,以及“20:00:00”和“21:00:00(明天)”之间

将代码更改为:

private boolean isBetween(String t1, String t2, String target){
    boolean result = false;
    try{

        Date time1 = new SimpleDateFormat("HH:mm:ss").parse(t1);
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(time1);


        Date time2 = new SimpleDateFormat("HH:mm:ss").parse(t2);
        Calendar calendar2 = Calendar.getInstance();
        calendar2.setTime(time2);


        Date d = new SimpleDateFormat("HH:mm:ss").parse(target);
        Calendar calendar3 = Calendar.getInstance();
        calendar3.setTime(d);


        Date x = calendar3.getTime();
        if (x.after(calendar1.getTime()) && x.before(calendar2.getTime())) {
            result = true;
            //checkes whether the current time is between 14:49:00 and 20:11:13.

            //Toast.makeText(UserCheckout.this, "The time is between", Toast.LENGTH_SHORT).show();
        }
    }
    catch (ParseException e){
        result = false;
        Toast.makeText(UserCheckout.this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    return result;
}

查看
calendar2.add(Calendar.DATE,1)
calendar3.add(Calendar.DATE,1)
,因为我想您正在检查
currentTime
是否分别在今天19:00和明天20:00之间,以及今天20:00和明天21:00之间
calendar3.add(Calendar.DATE,1)?您正在编写的API版本是否支持Java8?如果是这样的话,也许可以使用Java的时间api。@Jeroensteenbeek非常感谢你。它起作用了。@M.leRutte这个问题被标记为Android,所以Java8的功能附带了一些警告。也就是说,这些API可能是解决此问题的更好选择,因此使用这些API或ThreeTen库确实是一个更好的主意。当然,黑客只是使用
String.compareTo
来比较字符串。它的可读性不是很强,但会起作用。