У меня есть таблица db с полем даты startBefore
в ('Ym-d')
формате. Существуют также три других поля int, представляющие годы, месяцы и дни. То, что я хотел бы сделать, – заполнить эти три поля новой датой startAfter
в формате 'Ym-d'
.
Например, у меня есть «2001-11-14» в startBefore
даты startBefore
и я хотел бы вычесть 3 года, 7 месяцев, 1 день, чтобы получить дату startAfter
.
Любые идеи, как я могу это сделать?
Благодаря!
использовать strtotime('date -years -months -days')
<?php $time = strtotime('2001-11-14 -3 years -7 months -5 days'); echo $date = date("Ymd", $time);
Здесь идет DateTime
:
$start_date = '2013-03-06'; $date = DateTime::createFromFormat('Ym-d',$start_date); $date->modify('+1 month'); echo $date->format('Ym-d');//2013-04-06 $date->modify('+4 year'); echo $date->format('Ym-d');//2017-04-06 $date->modify('+6 day'); echo $date->format('Ym-d');//2017-04-12 $date->modify('+24 hours'); echo $date->format('Ym-d');//2017-04-13 $date->modify('-7 years'); echo $date->format('Ym-d'); //2010-04-13 $date->modify('-18 months'); echo $date->format('Ym-d'); //2008-10-13
Так далее и тому подобное.
Вы могли бы попробовать
Функция strtotime
в php довольно проста
<?php echo date("jS F, Y", strtotime("11.12.10")); // outputs 10th December, 2011 echo date("jS F, Y", strtotime("11/12/10")); // outputs 12th November, 2010 echo date("jS F, Y", strtotime("11-12-10")); // outputs 11th December, 2010 ?>
Один из способов – сделать startBefore датировать временную метку, чем работать с числами и повторно получить дату startAfter, другой способ – попытаться вычесть дни, месяцы и годы непосредственно с даты.