Регистрация    Вход    Форум    Поиск    FAQ

  •  Новости
  • Beeline + Twitter = чирикай через SMS!

    Beeline + Twitter = чирикай через SMS! На первой картинке обозначены команды, при помощи которых через SMS Вы сможете кого-либо зафолловить или же отписаться, ретвитнуть чей-либо пост или же написать личное сообщение.

    Open Graph Protocol. От создателей Facebook

    Open Graph Protocol. От создателей Facebook Разбираясь с Facebook API, случайно наткнулся на другую интересную разработку от этих людей.

    Глобальное ускорение Wordpress

    Глобальное ускорение Wordpress Не считая очевидных решений типа отключения некоторых плагинов и перехода на тему попроще, я вижу 2 пути для оптимизации: кэширование и сжатие траффика.




  •  Часы


  •  Поиск

Optimaze » Программирование » Подсчет оставшегося времени на PHP




Подсчет оставшегося времени на PHP



    Опишу одну функцию, которая позволяет отсчитать оставшееся время до какой-нибудь даты. Эта функция, конечно, после самого игрового класса с его методами, пожалуй, самая главная.

    Причем она участвует в работе игрового класса тоже. Ведь вся игра отталкивается от времени, она лимитирована временем и с помощью времени можно вести статистику команд. Вот собственно сам код:

     

    <?

    function TimeLeft($bedin_date,$begin_time){

            // Вычисляем сколько дней осталось до дня Х

        $dayhour = substr($bedin_date,8,2)-date(d)-1;

            // Переводим дни в часы

        $dayhour = $dayhour*24+substr($begin_time,0,2);

            // Расчет оставшихся минут

        $dayminute = substr($begin_time,3,2);

            // Оставшиеся секунды

        $daysecond = substr($begin_time,6,2);

            // Записываем в переменные $now_h, $now_m, $now_s часы, минуты, секунды

              соответственно реального вермени

        $now_h = 23-date(H);

        $now_m = 60-date(i);

        $now_s = 60-date(s);

            // Добавляем ведущие нули к часам, минутам и секундам, если таковые

              требуются

        $dayhour = Ich($dayhour+$now_h);

        $dayminute = Ich($dayminute+$now_m);

        $daysecond = Ich($daysecond+$now_s);

                    // Если минуты перевалили за 60 или равны 60ти, то вычитаем из минут 60,

                      а к часам добавляем 1.

            if($dayminute>=60){

                $dayhour = $i->Ich($dayhour+1);

                $dayminute = $i->Ich($dayminute-60);

                            // Проверяем на истечение срока

                if($dayhour<0){

                    echo '<h2>Время уже прошло!</h2>';

                }

                else{

                                    // выводим строку "Осталось: 00ч. 00мин. 00сек. "

                    echo '<h2>Осталось:

                                    '. $dayhour. 'ч. '. $dayminute. 'мин. '. $daysecond. 'сек. </h2>';

                }

            }else{

                            // Проверяем на истечение срока

                if($dayhour<0){

                    echo '<h2>Время уже прошло!</h2>';

                }

                else{

                                    // выводим строку "Осталось: 00ч. 00мин. 00сек. "

                    echo '<h2>Осталось:

                                    '. $dayhour. 'ч. '. $dayminute. 'мин. '. $daysecond. 'сек. </h2>';

                }

            }

        }

    ?>

     

    *Одна пометочка, функция рассчитывает оставшееся время в течение месяца, не больше. Для того, чтобы рассчитать время в течение года, функцию нужно немного модифицировать, думаю, исходя из примера это не составит большого труда.

     

    Если вы заметили, то в этом коде присутствует еще одна функция, Ich();. Ее роль очень мала, но достаточно велика. Для правильной работы функции TimeLeft(); и для верной синхронизацией с базой данных, от даты требуется формат 0000-00-00, а от времени 00:00:00. Так вот если с датой проблем не возникло, то с временем возникли.

    Если уже смотрели код, то должны были увидеть использование substr();, что и является проблемой из-за статических параметров. Задача была такова – date(“H:i:s”) не выводил время в формате, указанном в спецификации этой функции, что приводило к неправильной работе функции TimeLeft();, гуглил, ничего не нарыл, а просто дописал еще одну функцию Ich(); Вот код:

     

    <?

    function Ich($str){

    $var = strlen($str);

        if($var===1){

            $str = '0'. $str;

            return $str;

        }

        elseif($var===2){

            return $str;

        }

        elseif($var>2){

            return $str;

        }

    }

    ?>

    Кстати, если кому понравился плагин, для того чтобы выводить в статье код с подсветкой синтаксиса, нашел я его тут.



    Рейтинг: 4.6/5, основан на 25 голосах.


    Нравится



    Вернутся назад


       

    Вам будет интересно:

    JSR 292 Review Ballot

    Данная спецификация призвана решить проблему языков с динамической типизацией, таких как PHP, Perl, Python при реализации их на Java платформе (имеется ввиду JVM).

    Объектно-ориентированное программирование в JavaScript

    В этой статье я расскажу об объектной модели JavaScript и о техниках, которые можно использовать для реализации базовых ООП-концепций.

    Организация навигации по сайту

    Всем передвижением по сайту управляет два GET – параметра, передаем мы их в адресной строке, как известно.

    Потребитель сервиса (Service consumer)

    Экземпляр класса ChannelFactory - это объект, который создает прокси нашего сервиса.



    •  Публикации


    8 методов раскрутки своего форума с нуля

    8 методов раскрутки своего форума с нуля Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.

    Как привлекать посетителей на проект

    Как привлекать посетителей на проект Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.

    Про MySQL, серверы и PayPal

    Про MySQL, серверы и PayPal Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...

    Реклама в Твиттере. Как подать свой продукт

    Реклама в Твиттере. Как подать свой продукт Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...

    Пока блог на локалхосте

    Пока блог на локалхосте Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...

    Авторитет блоггера притягивает

    Авторитет блоггера притягивает Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.