-1

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

我的 Java 代码

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);
4

5 回答 5

3

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

在此处输入图像描述

您可以轻松地将日期与方法.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;
}

愿原力与你同在。

于 2012-12-24T12:18:24.543 回答
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 您可以做出选择并从中获取布尔值

于 2012-12-24T10:47:31.150 回答
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
于 2012-12-24T10:44:42.113 回答
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); 

}
于 2012-12-24T10:49:38.723 回答
-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
于 2012-12-24T10:46:21.920 回答