Intereting Posts
Автозагрузка в постгресах с использованием PDO Создание многоязычного меню навигации в CodeIgniter Сокращение для обновления строки таблицы в базе данных? Как напечатать вложенный массив объектов stdclass AjaxChat: Загрузка изображения, зависание, зависание браузера, аварийный сервер Путаница интерпретации KCachegrind определить статус http, который будет отправлен в php Можете ли вы сказать PHP, чтобы отправлять заголовки (например, 500), когда возникает ошибка? PHP подделал множественное наследование – наличие атрибутов объекта, установленных в поддельном родительском классе, доступном в расширенном классе Запросы PHP с несколькими скручиваниями Наличие двух разных сеансов в одном домене Отображение файла excel в браузере. PHPExcel Как проверить идентификатор приложения Facebook создать 3 зависимых выпадающего списка, используя php ajax mysql MySQL «Fire-And-Forget» рекомендуется использовать INSERT / UPDATE / DELETE – mysql_unbuffered_query?

Вычитание дней, месяцев или лет с даты с использованием php

У меня есть таблица 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, другой способ – попытаться вычесть дни, месяцы и годы непосредственно с даты.