Object Date in Java

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

SiarheiH wrote:Мое мнение - использовать календарь лучше всего, использовать long проще всего.


Спасибо за пояснения. Я использовала в итоге calendar. А как вы считаете, какой метод лучше использовать для вычитания/прибавления суток:

Code: Select all

Calendar.set(Calendar.DAY_OF_MONTH, Calendar.get(Calendar.DAY_OF_MONTH)-1);


или

Code: Select all

Calendar.roll(....)


Или без разницы?

Сабина
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

Sabina wrote:Мне нужно вставить в проверку интервал между двумя датами включительно.

if ((checkDate.after(startDate) && (checkDate.before(endDate)))

дает только даты между startDate и endDate при этом исключая сами эти даты, а мне надо включительно.

Спасибо,
Сабина


if (!(checkDate.before(startDate) && (!checkDate.after(endDate)))
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

bison wrote:
if (!(checkDate.before(startDate) && (!checkDate.after(endDate)))


Sorry, промахнулся


if ((!checkDate.before(startDate) && (!checkDate.after(endDate)))
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Object Date in Java

Post by Sabina »

bison wrote: if ((!checkDate.before(startDate) && (!checkDate.after(endDate)))


:oops: :oops: :oops:

Сабина
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »


Date today = new Date(), tomorrow, yersterday ;
Calendar cal = Calendar.getInstance() ;

cal.setTime(today) ;
cal.add(Calendar.DATE, 1);
tomorrow = cal.getTime() ;
cal.add(Calendar.DATE, -2);
yersterday = cal.getTime() ;


или без календаря

long day = 24 * 60 * 60 * 1000L ;
tomorrow.setTime(today.getTime() + day ) ;
yersterday.setTime(today.getTime() - day ) ;
Last edited by bison on 11 Dec 2003 21:38, edited 2 times in total.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Object Date in Java

Post by Sabina »

bison wrote: if ((!checkDate.before(startDate) && (!checkDate.after(endDate)))


А на практике этот if не сработал :(

Сабина
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

Sabina wrote:
bison wrote: if ((!checkDate.before(startDate) && (!checkDate.after(endDate)))


А на практике этот if не сработал :(

Сабина


Значит у вас где-то косяк или условия задачи даны не полностью

У нас всё точно:

Code: Select all

    Date date = new Date() ;
    Date startDate = (Date)date.clone() ;
    Date endDate = (Date)date.clone() ;
    if (!date.before(startDate) && !date.after(endDate))
    {
         System.out.println("мы здесь!") ;
    }

bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

может вам надо было исключить время ?
тогда что-то вроде :

Code: Select all

        Calendar cal = Calendar.getInstance() ;
        cal.setTime(startDate) ;
        cal.clear(Calendar.HOUR);
        cal.clear(Calendar.MINUTE);
        cal.clear(Calendar.SECOND);
        cal.clear(Calendar.MILLISECOND);
        startDate=cal.getTime() ;

        cal.setTime(endDate) ;
        cal.add(Calendar.DATE, 1);
        cal.clear(Calendar.HOUR);
        cal.clear(Calendar.MINUTE);
        cal.clear(Calendar.SECOND);
        cal.clear(Calendar.MILLISECOND);
        endDate=cal.getTime() ;

    if (!date.before(startDate) && date.before(endDate))
    {
         System.out.println("мы здесь!") ;
    }

Last edited by bison on 11 Dec 2003 21:29, edited 1 time in total.
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

тоже самое без календаря

Code: Select all

        long day = 24 * 60 * 60 * 1000L ;
        startDate.setTime(startDate.getTime() -  startDate.getTime() % day ) ;
        endDate.setTime(endDate.getTime() + day -  endDate.getTime() % day ) ;


    if (!date.before(startDate) && date.before(endDate))
    {
         System.out.println("мы здесь!") ;
    }

Last edited by bison on 11 Dec 2003 21:37, edited 2 times in total.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Object Date in Java

Post by Sabina »

bison wrote:может вам надо было исключить время ?
тогда что-то вроде :


Cпасибо, я обязательно разберусь в чем там "косяк", вот только разгребу первоочередные проблемы. А то у нас тут навалилось с утра :(

Пока с датами все работает. Может не совсем оптимально, но руки дойдут и пофиксим.

Сабина
bison
Новичок
Posts: 90
Joined: 20 Aug 2003 11:56
Location: Frankfurt/M

Re: Object Date in Java

Post by bison »

С учетом временной зоны

Code: Select all

        long day = 24 * 60 * 60 * 1000L ;
        long zone =  date.getTimezoneOffset() * 60 * 1000L ;

        startDate.setTime(startDate.getTime() -  startDate.getTime() % day + zone ) ;
        endDate.setTime(endDate.getTime() + day -  endDate.getTime() % day + zone ) ;


    if (!date.before(startDate) && date.before(endDate))
    {
         System.out.println("мы здесь!") ;
    }

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Object Date in Java

Post by Sabina »

bison wrote:С учетом временной зоны


Cпасибо,
у нас поправка за временную зону вводится через специальный user format в веб сервисе, то есть на уровне клиента мы уже об этом не беспокоимся ( и слава богу!)

Сабина
SiarheiH
Уже с Приветом
Posts: 297
Joined: 21 Mar 2002 10:01
Location: Minsk, BY -> central NJ

Post by SiarheiH »

Или без разницы? (set(date-1) или roll())


Беглый взгляд на исходный код реализации календаря говорит что разницы нет.

Return to “Вопросы и новости IT”