PHP Расчет будущей даты путем добавления дней к переменной date - программирование

PHP Расчет будущей даты путем добавления дней к переменной date

Я смотрел этот пост, и он близок к тому, что мне нужно: PHP - Как подсчитать 60 дней с даты добавления

Однако в этом сообщении расчет выполняется путем добавления 60 дней к текущей дате. Мне нужно рассчитать дату на основе даты переменной (а не текущей даты).

Что-то вроде этого:

$my_date = $some_row_from_a_database;
$date_plus_10_days = ???;

Кто-нибудь знает, как это сделать?

Спасибо

4b9b3361

Ответ 1

Вы можете поставить что-то перед частью "+10 дней":

strtotime("2010-01-01 +10 days");

Ответ 3

date('Y-m-d H:i:s', strtotime("2014-11-24 06:33:39" +35 days"))

это даст расчетную дату в определенном формате.

Ответ 4

Я вижу, что вы извлекаете данные из базы данных. Если вы используете mysql, вы можете сделать это при выборе:

Пример: вам нужна последняя дата таблицы и эта дата-7 дней

select max(datefield) as ultimaf, DATE_SUB(max(datefield),INTERVAL 7 DAY) as last7
from table

Легко использовать curdate(), если вы хотите, чтобы на сегодняшний день была дата.

Если вам нужна динамика между тем, что выбирает счетчик за последние 7 дней:

select count(*) from table
where DATE_SUB(CURDATE(),INTERVAL 7 DAY)<=datefield"

Ответ 5

Предположим, что сегодня дата

date_default_timezone_set('Asia/Calcutta');
$today=date("Y-m-d");

И я могу добавить 10 дней в текущую дату следующим образом:

$date_afte_10_days = date('Y-m-d', strtotime("$today +10 days"));

Ответ 6

Вам нужно будет изучить strtotime(). Я бы предположил, что ваш последний код будет выглядеть примерно так:

$dateVariable      = strtotime('2017-01-29');//your date variable goes here
$date_plus_60_days = date('Y-m-d', strtotime('+ 60 days', $dateVariable));
echo $date_plus_60_days;

Если вы используете PHP >= 5.2, я настоятельно рекомендую вам использовать новый объект DateTime. Например, как показано ниже:

$date_plus_60_days = new DateTime("2006-12-12");
$date_plus_60_days->modify("+60 days");
echo $date_plus_60_days->format("Y-m-d");