0

如何使用比較運算符比較Java中的日期?如何使用比較運算符比較Java中的日期?

實施例:

日期1是30-10-2017
DATE2是31-10-2017
DATE3是30-10-2018

date2返回false時它應該是真實的,它小於date3。如果日期少於另一日期,我該如何返回true,否則返回false?

這是我的代碼:
return (day < theDate.day) || (month < theDate.month) || (year < theDate.year);

下面是我目前的解決方案:

{ 
    boolean check = false; 
    if(year < theDate.year) 
    { 
     return true; 
    } 
    if(year > theDate.year) 
    { 
     return false; 
    } 
    if(month < theDate.month) 
    { 
     check = true; 
    } 
    if(day < theDate.day) 
    { 
     check = true; 
    } 
    else 
    { 
     return false; 
    } 
    return check; 
} 
+0

我不不要認爲java接受比較運算符的日期。但你可以使用'LocalDate' API以及'isBefore'和'isAfter'方法。 –

+0

你的日期級別是什麼類型? (完全限定)它是java.util.Date還是java.time.LocalDate或別的東西? –

回答

0

不能直接使用的關係運算符,但日期/時間類型通常實現Comparable

所以你應該可以做date1.compareTo(date2) < 0邏輯date1 < date2

+0

我正在比較爲日期對象設置的數值。我使用的字段是日,月和年的整數。所以我試圖檢查這些值。 – julianrios

+0

@ julianrios我不明白你想說什麼。 – lexicore

+0

這是我的java類的介紹的任務。所以我只是有點失落。我在bluej編碼,我不相信我可以訪問這個任務的API。 – julianrios

0

您應該使用boolean after(Date date)boolean before(Date date)。 例如,date2.before(date3)

+0

對不起,我不明白。 – julianrios

+1

@julianrios你用什麼課程來約會? – Maksim

+0

有沒有辦法插入我所有的代碼?看看我在我的領域和方法中擁有的東西可能會更容易。 – julianrios

0
LocalDate date1 = LocalDate.of(2017, 10, 30); // Year, month, day. 
LocalDate date2 = LocalDate.of(2017, 10, 31); 
LocalDate date3 = LocalDate.of(2018, 10, 30); 

System.out.printf("%s before %s? %s%n", date1, date2, date1.isBefore(date2)); 
System.out.printf("%s before %s? %s%n", date2, date3, date3.isBefore(date3)); 
System.out.printf("%s before %s? %s%n", date3, date1, date3.isBefore(date1)); 

如果你想知道如何做一個比較自己:

  • 比較第一年,則月,日:從最顯著至少
  • 由於這個原因,表示日期(和時間)的ISO標準是2017-09-30T13:05:01,000,其中與具有相同長度的表示的文本比較足夠。

,圖案有云:

  1. 如果多年不相等,則結果發現
  2. 如果幾個月不相等,則結果發現
  3. 結果是天比較