Работа с датами в PHP. Часть 2
Размещено 14 декабря 2009 | Просмотров: 1,142
в рубрике PHP | 10 комментариев
В одном из предыдущих постов я начал рассматривать вопросы, касающиеся работы с датой в PHP. Напомню, что было рассмотрено, как сформировать текущую дату и дату «по-русски». Сегодня разберем вопрос сравнения дат.
PHP. Сравнение даты.
Очень часто возникает задача сравнить 2 даты, например такие:
1 2 3 4 | <?php $date1 = "01-02-2010 12:00"; $date2 = "31-12-2009 11:59"; ?> |
И задача часто ставится не просто сравнить 2 даты, но и вычислить, насколько одна больше другой. Воспользуемся для этого функцией mktime(). Эта функция позволяет перевести дату в таймстамп (timestamp), т.е. в количество секунд, прошедших с 00:00:00 01:01:1970. Формат у функции такой:
1 | int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst]) |
Для того, чтобы из нашей даты получить дни, месяцы и годы – необходимо извлечь их как из обычной строки. Т.е. для наших дат сравнение будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $date1 = "01-02-2010 12:00"; $date2 = "31-12-2009 11:59"; $arr1 = explode(" ", $date1); $arr2 = explode(" ", $date2); $arrdate1 = explode("-", $arr1[0]); $arrdate2 = explode("-", $arr2[0]); $arrtime1 = explode(":", $arr1[1]); $arrtime2 = explode(":", $arr2[1]); $timestamp2 = (mktime($arrtime2[0], $arrtime2[1], 0, $arrdate2[1], $arrdate2[0], $arrdate2[2])); $timestamp1 = (mktime($arrtime1[0], $arrtime1[1], 0, $arrdate1[1], $arrdate1[0], $arrdate1[2])); $difference = floor(($timestamp2 - $timestamp1)/86400); echo 'Разница между датами: '.$difference.' дня(-ей)'; ?> |
В результате получаем, что разница между этими датами составляет 33 дня. Кстати, функцию floor() мы применили для округления количества дней, а 86400 – именно столько секунд в одном дне.
| Время | Секунды |
|---|---|
| 1 минута | 60 |
| 1 час | 3600 |
| 1 день | 86400 |
| 1 неделя | 604800 |
Если же Вам требуется вычислить разницу между текущим днем и расчетным – вместо переменной timestamp2 используйте функцию time(), о которой было сказано в первой части данного обзора.
Хотел еще написать несколько примеров, касающихся преобразования даты, но этих двух частях все основнын преобразования оказались уже рассмотрены. Если будут какие-то вопросы, задавайте в комментариях – дополню тогда посты ответами на них.
Просьба к читателям.
Это была первая серия постов на тему PHP. Уже более года она мне стала очень близка. Напишите, пожалуйста, в комментариях, нравится ли вам тематика PHP, в каком направлении хотелось бы видеть посты? Может вас интересует разбор каких-то готовых решений, скриптов… Вобщем жду Вашей реакции.
Похожие посты
Этот блог находят по фразам:
Комментарии
Оставляй комментарии и попади в ТОП5 комментаторов!
10 комментариев на “Работа с датами в PHP. Часть 2”
Написать комментарий


Подписался на ваш блог. И если честно, так как интересуюсь и пользуюсь php (уже написал пару полезных для себя скриптов), хотел бы видеть и разборы уже готовых скриптов, и конечно же ваши скрипты, и небольшие php-решения.
Считаю, что все будет полезным.
2 SeoAdvicer
А какого плана интересуют скрипты?
Естественно связанные с SEO.
Мог бы оформить функцией. Удобнее было бы тырить.
…
Хм…
Я видел как это делается с помощью ДжавыСкрипт.
…
…
…
…
bookerslive.ru…
более 3х вплотную обеспокоен вопросом и считаю ваши мысли немного поверхностными…
можно легко сравнить преобразовав даты к виду YYYY-MM-DD, если нужно узнать например больше или меньше