Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Получение кол-ва дней между двумя датами ...


Автор: ZMaximI 17.12.2007, 13:24
Добрый день!

Подскажите, пожалуйста, можноли узнать кол-во дней между двумя датами (из большей отнять меньщую) без лишних телодвижений ?

Спасибо.

Автор: AlexeyVorotnikov 17.12.2007, 13:36
Цитата(ZMaximI @ 17.12.2007,  13:24)
Добрый день!

Подскажите, пожалуйста, можноли узнать кол-во дней между двумя датами (из большей отнять меньщую) без лишних телодвижений ?

Спасибо.

А что значит "лишние телодвижения"?

Вот это с лишними:
Код

Date date1;
Date date2;
long daysBetween = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000);

или нет?

Автор: ZMaximI 17.12.2007, 13:48
нет, это не лишние ...

Спасибо большое, я совсем не подумал про время.

Автор: LSD 17.12.2007, 15:22
Только учти, что это не календарные дни а количество полных суток между датами.

Автор: ZMaximI 17.12.2007, 18:39
LSD , спасибо - это не есть хорошо ...
не подскажешь вариант без "игры" с двумя календарями для получения кол-ва дней, или этого просто не избежать ?

Автор: LSD 18.12.2007, 11:42
Цитата(ZMaximI @  17.12.2007,  18:39 Найти цитируемый пост)
не подскажешь вариант без "игры" с двумя календарями для получения кол-ва дней, или этого просто не избежать ?

Можно обойтись и одним, но вариантов без календаря - я не знаю.
Код

  private static int[] FIELDS = {Calendar.MILLISECOND, Calendar.SECOND, Calendar.MINUTE, Calendar.HOUR, Calendar.HOUR_OF_DAY, Calendar.AM_PM};

  private static void reset(Calendar c)
  {
    for (int field : FIELDS)
      c.clear(field);
  }

  public static void main(String[] args) throws Exception
  {
    Calendar c = Calendar.getInstance();
    c.set(2007, Calendar.DECEMBER, 30, 23, 26, 49);
    Date d1 = c.getTime();
    c.set(2008, Calendar.JUNE, 5, 15, 12, 20);
    Date d2 = c.getTime();

    c.setTime(d1);
    reset(c);
    long time1 = c.getTimeInMillis();
    c.setTime(d2);
    reset(c);
    long time2 = c.getTimeInMillis();
    long daysBetween = (time2 - time1 + 60 * 60 * 1000) / (24 * 60 * 60 * 1000);
    System.out.println("daysBetween = " + daysBetween);
  }

Автор: ZMaximI 18.12.2007, 14:14
Большое спасибо, все работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)