Ну, следующее возвращается, что дата была 5 дней назад:
$days_ago = date('Ym-d', mktime(0, 0, 0, date("m") , date("d") - 5, date("Y")));
Но как мне найти то, что было 5 дней назад с любой даты , а не только сегодня?
Например: что было за 5 дней до 2008-12-02?
Я думаю, что это можно сделать следующим образом:
$days_ago = date('Ym-d', strtotime('-5 days', strtotime('2008-12-02')));
define('SECONDS_PER_DAY', 86400); $days_ago = date('Ym-d', time() - 5 * SECONDS_PER_DAY);
Кроме этого, вы можете использовать strtotime
для любой даты:
$days_ago = date('Ym-d', strtotime('January 18, 2034') - 5 * SECONDS_PER_DAY);
Или, как вы использовали, mktime:
$days_ago = date('Ym-d', mktime(0, 0, 0, 12, 2, 2008) - 5 * SECONDS_PER_DAY);
Ну, ты понял. Ключ должен удалить достаточное количество секунд из метки времени.
узнать, что дата была 5 дней назад с сегодняшнего дня в php
$date = strtotime(date("Ymd", strtotime("-5 day")));
узнать, какая дата была n дней назад с сегодняшнего дня в php
$date = strtotime(date("Ymd", strtotime("-n day")));
5 дней назад с определенной даты:
$date = new DateTime('2008-12-02'); $date->sub(new DateInterval('P5D')); echo $date->format('Ym-d') . "\n";
Если вам нужен метод, в котором вы знаете алгоритм, или функции, упомянутые в предыдущем ответе, недоступны: преобразуйте дату в номер Юлианского дня (который является способом подсчета дней с 1 января, 4713 г. до н.э.), а затем вычесть пять, затем конвертировать обратно в календарную дату (год, месяц, день). Источниками алгоритмов для двух преобразований является раздел 9 http://www.hermetic.ch/cal_stud/jdn.htm или http://en.wikipedia.org/wiki/Julian_day
Используйте встроенные функции date_sub и date_add для математики с датами. (См. http://php.net/manual/en/datetime.sub.php )
Как и ответ Саззада, но в процедурном стиле PHP,
$date = date_create('2008-12-02'); date_sub($date, date_interval_create_from_date_string('5 days')); echo date_format($date, 'Ym-d'); //outputs 2008-11-27
Общие алгоритмы для обработки даты преобразуют даты в и из номеров Julian Day. Вот ссылка на описание таких алгоритмов, описание лучших известных в настоящее время алгоритмов и математические доказательства каждого из них: http://web.archive.org/web/20140910060704/http://mysite.verizon .net / aesir_research / дата / date0.htm