1. PHP / Говнокод #4199

    +150

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    <?php
    
    function DaysDiff($d1,$d2){
    	$d2=1+strtotime($d2);
    	$d1=1+strtotime($d1);
    	
    	return floor(($d2-$d1)/86400);
    }
    
    ?>
    
    а надо бы:
    
    <?php
    
    function DaysDiff($d1,$d2){
    	return bcdiv(strtotime($d2)-strtotime($d1),86400);
    }
    
    ?>

    Запостил: ferry-very-good, 08 Сентября 2010

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

    • а вообще в этом случае расчет делать в мускуле )
      Ответить
      • хы, разве в пыхе нету встроенных специализировнных функций работы с временем-датой?
        Ответить
        • date, mktime?
          Тот же испольозванный strtotime

          А почему "надо бы" через bcdiv? Чем деление строк лучше?
          Ответить
        • (TO_DAYS(dt2)-TO_DAYS(dt1)) as days_diff
          Ты знаешь путь короче
          P.S. Это mysql. На счет остальных точно сказать не могу
          Ответить
      • лол, а если у меня в проекте нет мускуля?
        мне его поставить спецом для расчетов,
        Ответить
    • 86400 это что?
      Это 24*60*60? Так и напиши. Константу вынеси.
      Ответить
      • зачем так усложнять?
        Ответить
        • Чтобы был виден смысл кода, а не абстрактное число.
          Ответить
          • > не абстрактное число
            а кол-во говна в тоннах
            Ответить
          • 86400 - не менее осмысленное число нежили абстрактные "24*60*60"
            Ответить
            • тогда уж так:
              define ( 'SECONDS_PER_DAY', strtotime("1 day")-strtotime("now") );
              Ответить
              • да нет наверно, всеж лучше
                /86400 // мне тут К.О. намекнул что 86400 это 24*60*60
                я нисколько не поддерживаю автора этого говнокода в виденье реализации этой функции но использовать 86400 более предпочтительно чем 24*60*60
                Ответить
                • судя по коду, может лучше просто ( $d2-$d1 ) ?
                  Ответить
                  • Ты ведь понимаешь что ты сейчас селфовнишся???? там $d1 и $d2 вовсе не в числовом формате...
                    Как ты думаешь что вернет твой код в случае DaysDiff('now','next Thursday');???
                    Ответить
                    • что ж они в функцию в голом виде попадают?.
                      неужели сразу из браузера? из поля <input>?
                      Ответить
                      • любишь отвечать вопросом на вопрос? ок
                        тогда почему ты коментируешь этим:
                        >судя по коду, может лучше просто ( $d2-$d1 ) ?
                        мой коммент про восемьдесят шесть тысяч четыреста???
                        Ответить
                        • во докопался...
                          потому что судя по коду это конечная функция.
                          А во всякую конечную функцию данные обычно приходят в удобоваримом формате.
                          а если это не так - тогда это очень задристаный ГК, и серьёзно это дело комментировать нужно было либо в институте, либо на лавочке у подъезда...
                          Ответить
                          • а что если он берет из из БД ввиде "2010-09-11 00:02:40" и какая тогда разница где делать strtotime() внутри этой функции или за ее пределами???

                            и ты так и не ответил на мой ответ, почему ты перевел тему восемьдесят шесть тысяч четырехсот в тему где лучше вставить strtotime() ???
                            Ответить
                            • тебе хочется об этом поговорить?
                              --
                              > ...и какая тогда разница где делать strtotime() внутри этой функции или за ее пределами???...
                              в начале разработки проекта.
                              Ответить
                              • раз уж ты сегодня такой добрый на ответы, может ответишь и на это?
                                >и ты так и не ответил на мой ответ, почему ты перевел тему восемьдесят шесть тысяч четырехсот в тему где лучше вставить strtotime() ???
                                Ответить
                                • на мой взгляд, мусолить что лучше 86400 или 24*60*60, - паранормальная бредятина.
                                  поэтому и перевёл тему.
                                  Ответить
                                  • А может запостить на holywars.ru «86400 vs 24*60*60»?
                                    Ответить
                                  • А по мне так предлагать ( $d2-$d1 ) - паранормальная бредятина.
                                    функция должна возвращать разницу дней а не миллисекунд...
                                    И предлагать свой бред можно не комментируя им мой.

                                    З.Ы. Не перевел бы тему, я бы про нее забыл...
                                    Ответить
                      • из БД
                        Ответить
                    • ничего не вернет, ну или FALSE/NULL/ERROR(NOTICE/WARNING) - не проверял
                      Ответить
              • гениально....
                Ответить
      • может автор -- старый админ DNSа? Они хорошо знают число 86400 ))
        Ответить
      • Угу, очень умно заставлять машину перемножать три числа при каждом вызове, всилу того, что ты невсостоянии узнать/запомнить что за такое коварное число?

        А вообще тебе стыдно должно быть девушки на первом курсе знают что такое 86400 и ее вариация 86400000
        Ответить
        • >> заставлять машину перемножать три числа при каждом вызов
          это очень страшно. PHP скрипт будет ужасно тормозить.

          зы: что такое 86400 мну знает
          Ответить
          • анонимус боится своей анонимности......
            Ответить
          • Сильно сомневаюсь что это творение может использоваться там, где из-за не перемноженных трех чисел скрипт будет тормозить, я лишь хотел подчеркнуть, что перемножать числа, которые можно перемножить самому, и в крайних случаях подписать что это за число в коменте, это хороший тон программирования...
            Ответить
            • Что в нем хорошего?
              Лучше делать константу. В компилируемых языках она все равно вычисился один раз, предпроцессором. А у пых-странички это ничего не занимает, на фоне HTTP запроса, интерпретации, парочки запросов в денормализованную базу с поиском по like varchar(255), и с наверняка кривым и неоптимизированным кодом:)

              Рефакторинг "extract method" тоже, знаете-ли, приводит к лишнему call, ret, лишней работе со стеком итд.. Но это ничто на фоне улучшаемой читаемости.

              ЗЫ: Если сжать пых например Zend Encoderoм (или каким-то другим тулзом, который кажется фейсбуки придумали), то константа тоже заменится скорее всего
              Ответить
        • > девушки на первом курсе знают что такое 86400 и ее вариация 86400000
          а у них большие сиськи?

          (я должен был спросить)
          Ответить
          • 86400 - это не одно и то же что и 90*60*90... как ни странно...
            там цифры в другом порядке идут...
            :)
            Ответить
          • у страшненькой - большие
            у второй визуально отсутствовали...
            Ответить
            • что не говорите, а проснуться рядом со страшной голой бабой гораздо приятней, чем с красивым голым мужиком
              Ответить
              • хочешь об этом поговорить? ;)
                Ответить
                • ппц... оч смешно
                  Ответить
                  • Не более смешно, чем твоя любовь к комментированию моих комментов ;)
                    Ответить
                    • ой, ё, не заметил...
                      ты отключил бы опцию...
                      --
                      Ответить
              • есть любители небольшой груди, кстати)

                так что не обязательно всё так плохо
                Ответить
                • и еще есть геи.... так, что все хуже чем могло бы быть.....
                  Ответить
                  • Во, хороший пример, как в общем-то нормальное слово gay было зохавано группой пидарасов. А поскольку вся эта пиндостанская политкорректность работает через пропаганду - в среде ненативно англоговорящих это слово теперь хер употребишь, потому что gay для большинства из них будет однозначно еблей в жопу.
                    Ответить
                    • 1) В NY есть "gay street". Ей лет 200
                      2) в Австралии слово сохранило старое значение "радостный"
                      3) afaik gay это аббривеатура good as you
                      Ответить
                    • Microsoft забанила геймера за слово «гей» в названии города Форт-Гей:
                      http://art-rudenko.livejournal.com/271756.html
                      Ответить

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