在Android中比较日期(时间)的问题

时间:2011-07-07 13:15:15

标签: android date time calendar compare

当我尝试比较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;
}

1 个答案:

答案 0 :(得分:0)

当我在日期上进行比较时,我确保使用Calendar对象。然后我使用compareTo()函数:

if ( myCalendar.compareTo(upperLimitCalendar) >= 0 )

请参阅此处的文档:

http://developer.android.com/reference/java/util/Calendar.html