Why is my date matching not correct?

If below never starts, then c.after (a) should always return false. However, if I uncomment the second println, I clearly see that a> 20050214, as I expect.

Date a = slice.getCurrentRow().getTime();
Calendar b = Calendar.getInstance();
b.set(2005, 2, 14);
if (b.after(a)) {
System.out.println(dateFormat.format(a));
}
//System.out.println(dateFormat.format(a));

+3
source share
6 answers

You pass the date to Calendar.after (Object when). If the "when" is also not a calendar, it always returns false. Try b.getTime (). After (a) instead.

http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#after(java.lang.Object)

+9
source

You check if 2005-02-14> a, and not vice versa.

+4
source

, b (14/02/2005) ( 14/02/2005). . :

if(a.after(b)) {

???

+2
Calendar b = Calendar.getInstance();
b.set(2005, 2, 14);

, , . : , , ?

? JavaDoc GregorianCalendar * :

GregorianCalendar .

, b , .

"", , :

Calendar b = new GregorianCalendar(2005, Calendar.FEBRUARY, 14, 0, 0, 0);

GregorianCalendar b.set? Calendar , . , Calendar , :

b.set(Calendar.HOUR_OF_DAY, 0);
b.set(Calendar.MINUTE, 0);
b.set(Calendar.SECOND, 0);
b.set(Calendar.MILLISECOND, 0);

, . , 12:00 , GregorianCalender.

. , b.getTime(), .

* GregorianCalendar - Calendar, Calendar.getInstance()

+2

b.after(a) true iff b a.

a > 2005-02-14, , a 2005-02-14.

|-------|---------------|-------|
   b=20050214     <     a

, . , , , Calendar.after Object.

,

b.getTime().after(a)
+1

Calendar b, 2005 14 , Java Date Calendar ( - 0). Calendar, (.. Calendar.FEBRUARY).

+1

Source: https://habr.com/ru/post/1762853/


All Articles