Как узнать, какая дата была 5 дней назад?

Ну, следующее возвращается, что дата была 5 дней назад:

$days_ago = date('Ym-d', mktime(0, 0, 0, date("m") , date("d") - 5, date("Y"))); 

Но как мне найти то, что было 5 дней назад с любой даты , а не только сегодня?

Например: что было за 5 дней до 2008-12-02?

Related of "Как узнать, какая дата была 5 дней назад?"

Я думаю, что это можно сделать следующим образом:

 $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