Подсчет оставшегося времени на 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; } } ?> Кстати, если кому понравился плагин, для того чтобы выводить в статье код с подсветкой синтаксиса, нашел я его тут. Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.