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

    +168

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <?php  
    function makestime($string) {  
    
    $day=floor($string/86400);  
    $hours=floor(($string/3600)-$day*24);  
    $min=floor(($string-$hours*3600-$day*86400)/60);  
    $sec=$string-($min*60+$hours*3600+$day*86400);  
    
    return $day.' дн. '.$hours.':'.$min.':'.$sec;  
    }  
    ?>

    Перевод секунд в дни
    Функция из WAP-MotoR CMS.
    Воистину, язык программирования дат.

    Запостил: 7ion, 30 Августа 2011

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

    • Зачем ? Есть же date(); ...
      Ответить
      • А причем тут функция date, я как понимаю он тут секунды в дни переводит,
        а не unixtime в дату.
        Ответить
        • Хм, а ведь правда.
          Задумался. А как тогда можно перевести секунды в дни по-другому?
          Ответить
          • Ну в принципе я тоже особо других способов не вижу, единственное сократить количество математических операций.
            Может кто-то из других отписавшихся в теме, знает. Ждем лучшего варианта.
            Ответить
          • Сложно придумать что-то другое. Если погуглить по "php seconds to days hours minutes", можно встретить и более фееричные варианты
            Ответить
            • Зачем стерли это?
              >P.S. Есть извращенская идея, но она работает только для интервалов менее 31 дня:
              >function stupid_sec2dhms($sec) {
              > return date('d дн. h:m:s', mktime(0, 0, 0, 1, 1) + $sec);
              >}
              date('d дн. h:m:s', $sec); отлично бы сработало в пределах 31 дня.
              Зачем тут mktime вот не понимаю.
              Ответить
              • До меня дошло, что для интервалов меньше дня всегда будет отображаться первый день месяца ('d' = 1), вне зависимости от реального числа прошедших дней.
                Да, mktime() не нужен, и так с 1 января будет время отсчитываться.
                В итоге работает только для интервалов больше дня, причём нужно будет отнимать число секунд в дне.
                Ответить
                • >причём нужно будет отнимать число секунд в дне
                  Что?
                  Это конструкция будет работать в пределах 30 дней, но для корректной работы надо будет отнимать от дня 1 - день будет убегать вперед.
                  В принципе, все проблемы только в днях, поэтому можно будет приделать костыль, который, если секунд больше, чем в 31 дне, будет плюсовать +31 к дням. Если больше, чем на 60 дней, то +60 дней. И т.д. до декабря.
                  Но это очередной ГК будет.

                  Получается, что этот говнокод и не особо говнокод.
                  Ответить
                  • > Но это очередной ГК будет.
                    вот поэтому я и стёр эту "идею" :)
                    Ответить
    • Ну, нравятся человеку округления, ничего не сделать с этим.

      > $string/86400

      Делим строку? о_О
      Ответить
      • Без округления дни, часы и минуты были бы дробными.
        Ответить
    • makakestime
      Ответить
    • >Функция из WAP-MotoR CMS.
      Да сюда можно весь дистр запостить. Там говно на говне сидит и говном погоняет.
      Ответить
    • показать все, что скрытоvanished
      Ответить

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