"PHP" / Говнокод #10401 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
preg_match('/(\d+)-(\d+)-(\d+)/i', date('d-m-Y'), $match);
ob_start();
echo (($match[1] == 30 || $match[1] == 31)?'01':(($match[2] <= 10)?'0':'').''.(++$match[1])).'.'; 
echo ((!$match[2][1])?'0':''); 
echo (($match[1] == 30 || $match[1] == 31)?++$match[2]:$match[2]); 
echo '.'.$match[3];
$rdate = ob_get_contents();
ob_end_clean();

Досталось в наследство...
По алгоритму $rdate должна содержать текущее число следующего месяца в формате date('d.m.Y'). Мало того, что способ означивания переменной чрезвычайно необычен, код оформлен безобразно, так оно еще и не работает!
На 29.05.2012 выдает "030.6.2012"

Запостил: domaster domaster, (Updated )

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

  • > текущее число следующего месяца
    Что-то я вас не понял...
    Ответить
      • Тогда я отказываюсь верить, что это мог написать психически здравый человек.
        Ответить
        • 1) Не "+1 month"?
          2) Как я понимаю, тупо приплюсует календарный месяц (проверять лень). А тут нужно инкрементнуть номер месяца.
          Ответить
          • Это прекрасно выполняется, работает корректно и решает задачу, описанную автором ГК.
            "1 month" и "+1 month" в данном случае равносильны.
            В любом случае, если тупо инкрементить номер месяца, то в один прекрасный момент получится 01.13.2012, что не совсем правильно.
            Ответить
          • Опять же, не поверял и проверять лень, если плюсует ровно до следующей даты, тогда всё в порядке, возражения снимаются. А то хрен знает, как там в этом пхп функции с датами работают.
            Ответить
            • Я сам эту конструкцию нагуглил и адаптировал. В доках почитал немного, вроде - то, что надо.
              По крайней мере на локалке тестанул - работает.
              Ответить
              • Весь этот код меняется на одну строчку
                $rdate = date('d.m.Y', strtotime('+1 month'));

                Забыл добавить в первоначальный комментарий.
                Ответить
              • Согласен, что-то меня внезапно потянуло на велосипеды. Минусую свой коммент.
                Немного смутило это "текущее число следующего месяца". Для 31 марта нет 31 апреля.
                Ответить
                • С этими вещами php в данном случае работает стабильно. (с особой, пхп-шной стабильностью 🙂
                  Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8