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

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

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

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

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

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

благодаря

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

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

Использовать date_add

http://www.php.net/manual/en/datetime.add.php

 $my_date = new DateTime($some_row_from_a_database); $date_plus_10_days = date_add($my_date, new DateInterval('P10D')); 
 date('Ymd H:i:s', strtotime("2014-11-24 06:33:39" +35 days")) 

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

Я вижу, что вы извлекаете данные из базы данных. Если вы используете 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" 

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

 date_default_timezone_set('Asia/Calcutta'); $today=date("Ymd"); 

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

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

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

 $dateVariable = strtotime('2017-01-29');//your date variable goes here $date_plus_60_days = date('Ym-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("Ymd");