Подтвердить что ты не робот

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

Итак, следующая дата возвращает 5 дней назад:

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

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

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

4b9b3361

Ответ 1

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

$days_ago = date('Y-m-d', strtotime('-5 days', strtotime('2008-12-02')));

Ответ 2

define('SECONDS_PER_DAY', 86400);
$days_ago = date('Y-m-d', time() - 5 * SECONDS_PER_DAY);

Кроме этого, вы можете использовать strtotime для любой даты:

$days_ago = date('Y-m-d', strtotime('January 18, 2034') - 5 * SECONDS_PER_DAY);

Или, как вы использовали, mktime:

$days_ago = date('Y-m-d', mktime(0, 0, 0, 12, 2, 2008) - 5 * SECONDS_PER_DAY);

Хорошо, вы поняли. Ключ должен удалить достаточное количество секунд из метки времени.

Ответ 3

узнать, что дата была 5 дней назад с сегодняшнего дня в php

$date = strtotime(date("Y-m-d", strtotime("-5 day")));

узнать, какая дата была n дней назад с сегодняшнего дня в php

$date = strtotime(date("Y-m-d", strtotime("-n day")));

Ответ 4

5 дней назад с определенной даты:

$date = new DateTime('2008-12-02');
$date->sub(new DateInterval('P5D'));
echo $date->format('Y-m-d') . "\n";

Ответ 5

Если вам нужен метод, в котором вы знаете алгоритм, или функции, упомянутые в предыдущем ответе, недоступны: конвертируйте дату в номер Юлианского дня (который является способом подсчета дней с 1 января, 4713 г. до н.э.), затем вычесть пять, а затем конвертировать обратно в календарную дату (год, месяц, день). Источниками алгоритмов для двух преобразований является раздел 9 http://www.hermetic.ch/cal_stud/jdn.htm или http://en.wikipedia.org/wiki/Julian_day

Ответ 6

Используйте встроенные функции date_sub и date_add для математики с датами. (См. http://php.net/manual/en/datetime.sub.php)

Как и у Sazzad, но в процедурном стиле PHP,

$date = date_create('2008-12-02');
date_sub($date, date_interval_create_from_date_string('5 days'));
echo date_format($date, 'Y-m-d'); //outputs 2008-11-27

Ответ 7

Общие алгоритмы обработки даты преобразуют даты в и из Юлианских чисел. Вот ссылка на описание таких алгоритмов, описание лучших известных в настоящее время алгоритмов и математические доказательства каждого из них: http://web.archive.org/web/20140910060704/http://mysite.verizon.net/aesir_research/date/date0.htm