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

    +160.7

    1. 1
    $_date	= date("Y-m-d", mktime("0", "0", "0", date("m"), date("d")-2, date("Y")));

    нашел в сорсе одного из наших сайтов

    Запостил: polizei, 24 Февраля 2010

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

    • А так нельзя?

      $_date = date("Y-m-d", time() - 84600 * 2);
      Ответить
      • date('Y-m-d', strtotime('-2 days'));

        семантично!
        Ответить
      • Китайско-индусское сотрудничество...
        $_date = mysql_query('SELECT FROM_UNIXTIME('.time().') - INTERVAL 2 DAY');
        Ответить
      • не подумали о том, что автору надо время на двое суток назад на 0 часов ?
        Ответить
        • Автору надо дату на двое суток назад, а не время.
          Ответить
      • Удачи с переводом часов на час. Сам использовал подобный механизм, чтобы не грестись с переводами часов.
        Ответить
        • Поподробнее, пожалуйста, не уловил сути с переводом.
          Ответить
    • Напишите лучше как правильно. А то я так тоже писал, становится стыдно.
      Ответить
      • См. первых два комментария
        Ответить
        • Рекомендую вариант в самом первом комментарии - он работает быстрее всего.
          Ответить
        • Мда. Что то мне не хорошо. В упор не замечал что действительно писал такую хрень
          Ответить
          • $fin = explode('.', $this->start);
            return date('d.m.Y', mktime(0, 0, 0, $fin[1], $fin[0] + $this->nights, $fin[2]));
            А в этом случае как правильнее сделать, если это возможно?
            Вариант второго комментария страшно использовать, ведь есть неоднозначность где месяц, а где число.
            Ответить
            • А не страшно Вам использовать, если $fin[0] будет 31?

              Какую неоднозначность имеете ввиду?
              Ответить
              • при $fin[0] = 31 переход на следующий месяц, проверено.

                Допустим $this->start = 09.09.2011 и $this->nights = 2 какую часть строки $this->start функция будет воспринимать как число, а какую как месяц?
                date('Y-m-d', strtotime('09.09+2.2011'));
                Ответить
            • А что мешает
              return date('d.m.Y', strtotime($this->start) + 86400 * $this->nights);

              ?
              Ответить
              • В том и вопрос, как функция strtotime($this->start), где $this->start = '09.09.2011', будет преобразовывать строку.
                Как дату в формате ДД.ММ.ГГГГ или ММ.ДД.ГГГГ (американский формат вроде бы)?
                Ответить
                • Проверил strtotime, строку XX.XX.XXXX воспринимает как DD.MM.YYYY при том, если например месяц выходит за диапазон [1..12] во возвращает false. Но все равно ссыкотно.
                  Ответить
                • > ММ.ДД.ГГГГ
                  Вообще он записывается как ММ/ДД/ГГГГ и strtotime его тоже правильно разбирает
                  Ответить
    • Бесят цифры в кавычках!
      Ответить
    • Нормальный код! Отстаньте от автора!
      Ответить
    • Нормальый?
      Рекомендую
      $_date = date('Y-m-d', $_SERVER['REQUEST_TIME'] - 172800);
      Ответить

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