2015-03-02 2 views
4

Скорее всего, это будет дубликат для этого вопроса, но я изо всех сил пытаюсь найти точный ответ на мою проблему.PHP - добавьте одну неделю до указанной пользователем даты

Пользователь вводит дату начала аренды клиента (в форме на предыдущей странице), тогда ему необходимо создать следующую дату (через неделю), которую клиент должен заплатить. Например:

$start_date = $_POST['start_date']; 
$date_to_pay = ??? 

Допустим, пользователь вводит в 2015/03/02:

$start_date = "2015/03/02"; 

я тогда хочу дату платить равным через неделю (2015/03/09) :

$date_to_pay = "2015/03/09"; 

Как можно обойти это? Большое спасибо.

+2

Да! Существует много и много дубликатов: '$ _POST ['start_date'] = '2015/03/02'; $ date = new DateTime ($ _ POST ['start_date']); $ date-> добавить (новый DateInterval ('P1W')); echo $ date-> format ('Y/m/d'); ' –

+0

создать дату с пользовательского ввода, а затем добавить неделю на нем. Для кода см. Комментарий @MarkBaker –

+0

проверить эту ссылку: http://stackoverflow.com/questions/6086389/php-date-format-yyyy-mm-dd-minus-or-add-one-week-from -now – jems

ответ

5

Вы можете попробовать это

$start_date = "2015/03/02"; 
$date = strtotime($start_date); 
$date = strtotime("+7 day", $date); 
echo date('Y/m/d', $date); 
+0

Sidenote: + 7 дней приятно, но вы могли бы просто сделать + 1 неделю, просто персонализированные предпочтения. – Naruto

+0

Следует отметить, что это очень плохой способ сделать это, 'strtotime' возвращает секунды с эпохи, вы можете просто добавить одну неделю в секундах до времени и избежать дополнительного медленного вызова 'strtotime'. '$ date = strtotime ($ start_date) + 604800;' – HostFission

6

Пожалуйста, попробуйте следующее:

date('d.m.Y', strtotime('+1 week', $start_date)); 
+0

Так я бы сделал $ date_to_pay = date ('dmY', strtotime ('+ 1 week', $ start_date)); ?? – Jack

+0

Точно, установите в соответствии с вашим форматом Y/m/d. –

+0

Я просто пробовал это снова, потому что почему-то мой $ date_to_pay вышел как 1970/01/07 lol – Jack

1
$start_date = "2015/03/02"; 
$new_date= date("Y/m/d", strtotime("$start_date +1 week")); 
1

Вы можете использовать этот ..

$startdate = $_POST['start_date']; 
$date_to_pay = date('Y/m/d',srtotime('+1 week',$startdate)); 
2

объектно-ориентированный стиль с использованием DateTime классов :

$start_date = DateTime::createFromFormat('Y/m/d', $_POST['start_date']); 

$one_week = DateInterval::createFromDateString('1 week'); 

$start_date->add($one_week); 

$date_to_pay = $start_date->format('Y/m/d'); 

Или для тех, кто хотел бы иметь все это на одном дыхании:

$date_to_pay = DateTime::createFromFormat('Y/m/d',$_POST['start_date']) 
         ->add(DateInterval::createFromDateString('1 week')) 
         ->format('Y/m/d');