1. Java / Говнокод #108

    −55.8

    1. 1
    2. 2
    3. 3
    4. 4
    public static int daysBetween(Date startDate, Date endDate)
    {
         int difInDays = (int) ((endDate.getTime() - startDate.getTime())/(1000*60*60*24));
    }

    Потрясающая воображение функция, которая считает разницу в днях между датами. Различие с правильным результатом в +\- 1 день получается в 30% случаев...

    Запостил: guest, 11 Декабря 2008

    Комментарии (8) RSS

    • zerkms:
      откуда 30% ?
      Ответить
    • lollol:
      О! мой код...
      Гы, хоть и галимый, но рабочий
      Ответить
    • Хрен там!:
      > To lollol (6 дней назад)
      Какой-же он рабочий? :)
      Ответить
    • in7:
      Вставили бы реальный код: ведь данный метод без оператора return даст ошибку
      Ответить
    • Как минимум забыли учесть переход на летнее/зимнее время.
      Ответить
      • как минимум это не в 1 очеред здес ашибочно :)
        Надо обрубать Временную часть в датах и потом считать Ы

        А летнее время это уже другая пестня Ы, причём если бирём time в милисекундах надо брать в GTM и пох локали и летнее время, ибо нам нужно количество дней между Ы
        Ответить
    • Вот правильный метод:

      /**
      * Calculates days between two dates.
      * @param startDate start date
      * @param endDate end date
      * @return the number of days
      */
      public static long daysBetween(Calendar startDate, Calendar endDate) {
      Calendar date = (Calendar) startDate.clone();
      long daysBetween = 0;
      while (date.before(endDate)) {
      date.add(Calendar.DAY_OF_MONTH, 1);
      daysBetween++;
      }
      return daysBetween;
      }
      Ответить

    Добавить комментарий