Nickolay.info. PHP. Скрипт и класс для определения разницы дат |
Скрипт определяет разницу двух дат - заданной и сегодняшней. Вывод может делаться в виде текста или картинки, в обеих случаях к скрипту можно обратиться с постоянным URL. В зависимости от настроек, можно вывести следующую информацию:
Так как расчёт делается не "вручную", а на основе метода DateTime::diff
, для работы скрипта нужен PHP версии не ниже 5.3, где появился этот метод.
К сожалению, на момент написания статьи в моём PHP 5.3.5 метод DateTime::diff
работал с рядом багов:
datediff
.
1) 1 месяц, 8 дней; 39 дней; 5 недель, 4 дня 2) 1 месяц, 8 дней; 38 дней; 5 недель, 3 дня 3) 1 месяц, 7 дней; 37 дней; 5 недель, 2 дня 4) 1 месяц, 6 дней; 36 дней; 5 недель, 1 день
Здесь мы считали число дней от 1-4 июня 2011 до 10 июля 2011, обратите внимание на одинаковые "8 дней" в первых двух строках.
Всё это я постарался учесть в коде класса datediff.php
. Второй файл архива - index.php
- форма для вызова класса. Конечная дата, кстати, не обязана быть сегодняшней, установить её можно методом setdate2
. Третий файл - шрифт comic.ttf
, которым формируются картинки. Всё сделано очень быстро и для себя, если понадобится кому-то ещё - я только рад.
Если Ваш "движок" или сайт не позволяют указывать URL картинки, не оканчивающийся на .jpg или .gif, я не виноват :) Мой позволяет:
Вот какая получилась картинка:
Вот таким кодом HTML её можно вставить в блог:
<img src="http://ВАШ_URL_СКРИПТА/index.php?d=16-02-2011&t=%CF%F0%EE%F8%EB%EE&r=7&g=1&f=12" alt="">
Файлы скрипта в архиве ZIP (91 Кб)
Разница дат и день недели для даты на Javascript
P.S. Если класс будет работать на хостинге с установленной по умолчанию кодировкой UTF-8 (Юникод), то нужно не только
перекодировать в неё файлы index.php
и datediff.php
, но и убрать преобразование кодов символов функцией
str_rus
файла datediff.php
. Функцию можно переписать так:
private function str_rus ($str){ return ($str); }
Также замените в index.php
строку
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
на
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
и больше ничего менять не нужно.
Разумеется, часы на сервере должны идти правильно.
А перекодировать из Windows в Юникод и обратно удобней всего с помощью Far 2.0, а именно:
F4
);
Ctrl+A
, Ctrl+X
);
Shift+F8
, в списке кодировок клавишами со стрелками выбрать 65001 (UTF-8)
, нажать Enter
Ctrl+V
Esc
(выход), затем Enter
(подтверждение сохранения файла).
Для тех, кто совсем в танке - слова вроде "клавиши Ctrl+A
" означают "при зажатой клавише Ctrl
, не отпуская её, нажать клавишу A
" :)
гостевая; E-mail |