Не работает сравнение дат...
От: Аноним  
Дата: 18.07.07 08:00
Оценка:
Помогите с сравнением дат. Никак не могу понять почему не работает:
(java 1.4)
public class Temp {
    public static void main(String args[]) {
        Date date1 = new Date();
        date1.setHours(1);
        date1.setMinutes(1);
        date1.setSeconds(1);
        
        Date date2 = new Date(107, 6, 18, 1, 1, 1);
        
        System.out.println(date1.toGMTString()+" = "+date2.toGMTString()+" : "+date1.compareTo(date2));
    }
}


В результате на экране строка:
17 Jul 2007 22:01:01 GMT = 17 Jul 2007 22:01:01 GMT : 1

Но почему результатом сравнения является 1 а не 0, как написано в описании функции Date.comparaTo(Date)?
Re: Не работает сравнение дат...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 18.07.07 08:17
Оценка:
Здравствуйте, <Аноним>, Вы писали:

Поди потому что доли секунды не учли?
Вообще для сравнение дат лучше (удобнее, проще) пользоваться классом Calendar, посмотрите поиском — это постоянная тема обсуждения в данном разделе.
Re: Не работает сравнение дат...
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 18.07.07 08:17
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>Помогите с сравнением дат. Никак не могу понять почему не работает:

А>...
А>Но почему результатом сравнения является 1 а не 0, как написано в описании функции Date.comparaTo(Date)?

package java.util;
...
public class Date ... {
    ...
    public int compareTo(Date anotherDate) {
        long thisTime = getMillisOf(this);
        long anotherTime = getMillisOf(anotherDate);
        return (thisTime<anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1));
    }
    ...
}


public class BBB {
    public static void main(String[] args) throws Exception {
        Date date1 = new Date();
        date1.setHours(1);
        date1.setMinutes(1);
        date1.setSeconds(1);

        Date date2 = new Date(107, 6, 18, 1, 1, 1);

        System.out.println(date1 + " = " + date2 + " : " + date1.compareTo(date2));

        System.out.println("First date:");
        printInnerState(date1);
        System.out.println("");
        System.out.println("Second date");
        printInnerState(date2);
    }

    private static void printInnerState(Date date) throws Exception {
        Field field = Date.class.getDeclaredField("cdate");
        field.setAccessible(true);
        System.out.println("\tcdate is " + field.get(date));
    }
}


Output:

Wed Jul 18 01:01:01 MSD 2007 = Wed Jul 18 01:01:01 MSD 2007 : 1
First date:
cdate is 2007-07-18T01:01:01.671+0400

Second date
cdate is 2007-07-18T01:01:01.000+0400


P.S. не смущает, что ты сплошь deprecated методы используешь?
http://denis-zhdanov.blogspot.com
Re: Не работает сравнение дат...
От: goorov  
Дата: 18.07.07 08:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Но почему результатом сравнения является 1 а не 0, как написано в описании функции Date.comparaTo(Date)?


миллисекунды не забыл?
Re[2]: Не работает сравнение дат...
От: Leith  
Дата: 18.07.07 10:38
Оценка:
Здравствуйте, rsn81, Вы писали:

R>...посмотрите поиском — это постоянная тема обсуждения в данном разделе.


А вот с поиском что-то в последнее время проблемы — не работает он.
Офф про поиск
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 18.07.07 12:21
Оценка:
Здравствуйте, Leith, Вы писали:

L>А вот с поиском что-то в последнее время проблемы — не работает он.

Читаю через Janus — полет нормальный.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.