Java 如何在android中比较两次?
我想在我的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
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
来比较字符串。它的可读性不是很强,但会起作用。