Библиотека программиста

19.04.2024 - Вычисляем дату. Разница между двумя датами

Как-то мне пришлось писать скрипт, который сидит в кроне и запускается в какое-то определённое время, для чистки логов на сервере. Задача стояла так, что в момент запуска скрипта мне нужно было удалять какие-то логи, например, двухмесячной давности из одного каталога и годовой давности из другого каталога. И тут я столкнулся с тем, что каждый раз перед запуском в скрипт приходилось вписывать дату старости логов, исходя из сегодняшней даты. Немного порывшись в мануале, я нашел решение.




Для этого я использовал две функции языка:

PHP - Код
date()


и

PHP - Код
strtotime()


Допустим, нам надо получить дату, меньшую, чем дата запуска, на два месяца. Пишем:

PHP - Код
$twomonthsago date("Y-m-d"strtotime ("-2 month")); 
//Получим дату на два месяца раньше от текущей

На год назад:

PHP - Код
$oneyearago date("Y-m-d"strtotime ("-1 year"));


Также можно получить и дату вперёд:

PHP - Код
date("Y-m-d"strtotime("+1 week"));


Также можно задавать промежуток не только по дням, но и по часам, минутам и секундам:

PHP - Код
date("Y-m-d"strtotime("+1 week 2 days 4 hours 2 seconds"));


Ещё мне как-то понадобилось определять разницу между двумя датами. И в итоге у меня вышло вот что:

PHP - Код
$current_date mktime (0,0,0,date("m") ,date("d"),date("Y")); //дата сегодня
$old_date mktime (0,0,0,11,25,2004); //2004.11.25
$difference = ($current_date $old_date); //разница в секундах
$difference_in_days = ($difference 86400); //разница в днях


Надеюсь, что это кому-нибудь да пригодится.
Опубликовано на сайте: http://www.coders-library.ru
Прямая ссылка: http://www.coders-library.ru/index.php?name=news&op=view&id=201