2012-12-24 93 views
-1

在我的应用程序中,我想比较两个日期,我的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); 
+3

我不明白keepin这两个日期只是日历的当前实例!日历日期= Calendar.getInstance(); 日历next_due_on = Calendar.getInstance(); –

+0

我用它来获取日历日期。这是不是得到它的正确方法? – Mona

+0

AFAIK,变量date和next_due_on都是当前日期。检查使用调试 –

回答

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

你会看到millis的时间是一样的

1356345814527 
1356345814527 
+0

你不'日历'为此。 – m0skit0

-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 
+0

任何对downvoting的评论,还是只是肆虐?谢谢。 – m0skit0

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; 
} 

温度会1,0,-1就可以让你选择并获得布尔如下代码,它

+0

只需'返回(temp == 0 || temp == 1)' – m0skit0

+0

根据您的需要编写您的逻辑,temp将为1,0,-1您可以选择并取得布尔值 –

+0

我的朋友,我的意思是'if(temp == 0 || temp == 1) return true; return false;'与return(temp == 0 || temp == 1)相同;'。此外,Java API [未定义它是0,-1和1](http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#compareTo%28java.util.Calendar %29)但0,<0 and > 0.注意。 – m0skit0

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

} 
+0

只需创建您想要的duedate对象并在isDueDateValid方法中将对象作为参数传递; –

3

在大多数情况下,当你这样做,你应该使用乔达时间日期的操作。您可以找到主页: 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; 
} 

愿力量与你同在比较日期。

+1

为幽默+1 :) – m0skit0

+0

非常感谢我的朋友! –