不比较日期

时间:2012-12-24 10:19:02

标签: java android date

在我的应用程序中,我想比较两个日期,我的next_due日期必须等于且大于当前日期。我编码但它不工作:(代码中的更正是什么,以便我达到所需的结果亲切帮助

我的JavaCode

public void CompareDates(){
      Calendar date = Calendar.getInstance();
      Calendar next_due_on = Calendar.getInstance();

    if(date.before(next_due_on))
    System.out.print("Current date(" + new SimpleDateFormat("dd/MM/yyyy").
    format(next_due_on.getTime()) + ") is greater than the given date " + new
    SimpleDateFormat("dd/MM/yyyy").format(date.getTime()));
          else
      System.out.print("Both date are equal.");
      }

 date_txtbx = (EditText) findViewById(R.id.date_txtbx);
        date_txtbx.setText(" " 
        + String.valueOf(java.text.DateFormat.getDateTimeInstance()
                                    .format(Calendar.getInstance().getTime())));

        next_due_on_txtbx = (EditText) findViewById(R.id.next_due_on_txtbx);
        next_due_on_txtbx.setText(non_ticket_task.next_due_on);

5 个答案:

答案 0 :(得分:3)

    public boolean dateCompare(Date date1 , Date date2){

    Calendar date = Calendar.getInstance();
    date.setTime(date1);
    Calendar next_due_on = Calendar.getInstance();
    next_due_on.setTime(date2);
    int temp = date.compareTo(next_due_on);
    if (temp == 0 || temp == -1)
        return false;
    return true;
}

temp将为1,0,-1你可以做出选择并从中获取布尔值

答案 1 :(得分:3)

在大多数情况下,当您进行日期操作时,您应该使用 joda-time 。您可以在以下位置找到主页: http://joda-time.sourceforge.net/quickstart.html

enter image description here

您可以使用方法.isBefore()isAfter()

轻松比较日期
public boolean hasWordEnded(){

    String today = "24/12/2012";
    String endOfMayanCalendar = "21/12/2012";
    DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yyyy");

    DateTime todayDate = fmt.parseDateTime(today);
    DateTime endOfWorldDate = fmt.parseDateTime(endOfMayanCalendar);

    if (todayDate.isAfter(endOfWorldDate)){
        return true;
    }
    return false;
}

愿力量与你同在。

答案 2 :(得分:1)

Calendar date = Calendar.getInstance();
Calendar next_due_on = Calendar.getInstance();

来得太快,试试

Calendar date = Calendar.getInstance();
Calendar next_due_on = Calendar.getInstance();
System.out.println(date.getTimeInMillis());
System.out.println(next_due_on.getTimeInMillis());

你会看到以毫秒计的时间是相同的

1356345814527
1356345814527

答案 3 :(得分:1)

尝试以下代码。

public static void main(String[] args)
{

    Calendar dueDate = Calendar.getInstance();
    System.out.println(isDueDateValid(dueDate));

    dueDate.add(Calendar.MONTH, -1);    
    System.out.println(isDueDateValid(dueDate));

    dueDate.add(Calendar.MONTH, 2); 
    System.out.println(isDueDateValid(dueDate));
}



public static boolean isDueDateValid(Calendar dueDate)
{
    Calendar currDate = Calendar.getInstance();

    return dueDate.after(currDate); 

}

答案 4 :(得分:-1)

Date date1;
Date date2;
[...]
Calendar c1 = Calendar.getInstance();
c1.setTime(date1);
Calendar c2 = Calendar.getInstance();
c2.setTime(date2);
int result = c1.compareTo(c2); // 0 if equal, < 0 if c1 before c2, > 0 if c1 after c2