web-dev-qa-db-fra.com

Soustraction de jours, mois ou années à partir de la date avec php

J'ai une table de base de données avec un champ de date startBefore au format ('Y-m-d'). Il existe également 3 autres champs int représentant les années, les mois et les jours. Ce que je voudrais faire est de remplir ces trois champs la nouvelle date startAfter au format 'Y-m-d'.

Par exemple, la date 'startBefore' est '2001-11-14' et j'aimerais soustraire 3 ans, 7 mois, un jour pour obtenir la date startAfter.

Des idées comment je peux accomplir ceci?

Merci!

8
dimoss

utiliser strtotime('date -years -months -days')

  <?php
    $time = strtotime('2001-11-14 -3 years -7 months -5 days');
    echo $date = date("Y-m-d", $time);
22
Nambi

Voici la DateTime:

$start_date = '2013-03-06';
$date = DateTime::createFromFormat('Y-m-d',$start_date);

$date->modify('+1 month');
echo $date->format('Y-m-d');//2013-04-06

$date->modify('+4 year');
echo $date->format('Y-m-d');//2017-04-06

$date->modify('+6 day');
echo $date->format('Y-m-d');//2017-04-12

$date->modify('+24 hours');
echo $date->format('Y-m-d');//2017-04-13

$date->modify('-7 years');
echo $date->format('Y-m-d'); //2010-04-13

$date->modify('-18 months');
echo $date->format('Y-m-d'); //2008-10-13

Etc., etc.

13
tomexsans

Tu pourrais essayer 

strtotime function in php c'est assez simple

<?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  
?> 
2
Jenno Richi Benat

Une façon consiste à faire du début Avant la date un horodatage, plutôt que de travailler avec des nombres et de récupérer la date de début, un autre moyen consiste à essayer de soustraire des jours, des mois et des années directement à la date.

0
Goikiu