2015-08-31 64 views
0

如何比較不帶時間戳的日期使用公曆? 在下面提供的示例中,兩個結果都必須是true如何使用公曆日曆比較沒有時間戳的日期?

package com.tutorialspoint; 

import java.util.*; 

public class GregorianCalendarDemo { 

    public static void main(String[] args) { 

    // create a new calendar 
    GregorianCalendar cal1 = 
    (GregorianCalendar) GregorianCalendar.getInstance(); 

    // print the current date and time 
    System.out.println("" + cal1.getTime()); 

    // create a second calendar equal to first one 
    GregorianCalendar cal2 = (GregorianCalendar) (Calendar) cal1.clone(); 

    // print cal2 
    System.out.println("" + cal2.getTime()); 

    // compare the two calendars 
    System.out.println("Cal1 and Cal2 are equal:" + cal1.equals(cal2)); 

    // change cal 2 a bit 
    cal2.add(GregorianCalendar.MINUTE, 5); 

    // compare the two calendars 
    System.out.println("Cal1 and Cal2 are equal:" + cal1.equals(cal2)); 

    } 
} 
+0

@Jens:我試過compareTo和equal。但是,我意識到等於使用時間戳。這就是爲什麼我要問如何忽略它。 –

+0

你爲什麼比較日曆? –

+0

您必須編寫自己的比較方法。 – Jens

回答

4

假設cal1cal2具有相同的時區(即cal1.getTimeZone().equals(cal2.getTimeZone())),可以使用下面的代碼只比較日期:

cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && 
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR) 
1

既然你是比較使用equals兩個實例,他們可以,如果他們代表完全一樣的時間戳僅是相等的。請參閱java.util.GregorianCalendar#equals Javadoc:

將此GregorianCalendar與指定的Object進行比較。當且僅當參數是一個GregorianCalendar對象時,結果爲true,該對象表示與此對象具有相同日曆參數和公曆更改日期下的相同時間值(與Epoch的毫秒偏移量)。

因此,在將cal2的值更改爲不同的值後,它永遠不會等於cal1

0

如果要比較日期使用下面的代碼:

// compare the two dates 
System.out.println("Date1 and date2 are equal:" + cal1.getTime().equals(cal2.getTime()));