当我尝试比较Android中的两个日期时,我遇到了问题。我不确定它是模拟器的问题还是我的代码本身有问题。 问题是代码在普通的Java程序环境中工作,这让我更加困惑。
我有以下代码来比较Android 2.1中的日期:
public boolean compareDates(String givenDateString) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
boolean True;
try {
True = false;
Date givenDate = sdf.parse(givenDateString);
Date currentDate = new Date();
if(givenDate.after(currentDate)){
True = true;
} if(givenDate.before(currentDate)){
True = false;
} if(givenDate.equals(currentDate)){
True = false;
}
} catch (Exception e) {
Log.e("ERROR! - comparing DATES", e.toString());
}
return True;
}
现在代码在Java中运行良好,但在Android中它一直让我错误。 当我使用如下字符串插入currentDate变量时,唯一的变化发生了:
Date currentDate = sdf.parse("16:50");
在字符串中设置currentDate变量时,当我将其与给定时间之后的值进行比较时,它返回true。我还尝试将currentDate变量设置为:
Calendar calendar = Calendar.getInstance();
Date currentDate = calendar.getTime();
我在这里完全不知所措。希望有人对这里可能存在的问题有任何想法。
---编辑---
找到解决我问题的方法。我使用日历并从那里读取小时和分钟,然后我把它们放在一个字符串中解析它的工作原理。代码现在看起来像这样:
public boolean compareDates(String givenDateString) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
boolean True = false;
try {
Date givenDate = sdf.parse(givenDateString);
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
Date currentDate = sdf.parse(hour + ":" + minute);
if(givenDate.after(currentDate)){
True = true;
} if(givenDate.before(currentDate)){
True = false;
} if(givenDate.equals(currentDate)){
True = false;
}
} catch (Exception e) {
Log.e("ERROR! - comparing DATES", e.toString());
}
return True;
}
答案 0 :(得分:0)
当我在日期上进行比较时,我确保使用Calendar对象。然后我使用compareTo()函数:
if ( myCalendar.compareTo(upperLimitCalendar) >= 0 )
请参阅此处的文档:
http://developer.android.com/reference/java/util/Calendar.html