2016-08-04 46 views
1

Ich versuche, eine benutzerdefinierte Anzahl von Monaten zu dem Datum hinzuzufügen, das zuvor hinzugefügt wurde. $ CustDate ist bereits im JJJJ-MM-TT-Format vom vorherigen Formular.benutzerdefinierte Monate zum angegebenen Datum hinzugefügt

$CustDate=$_POST['formYear'] . "-" . $_POST['formMonth'] . "-" . $_POST['formDay']; 

$months=$_POST['formMonthsAdded']; 
$d=strtotime("+" . $months . " Months"); 

$CustAddedDate=date("Y-m-d", strtotime($CustDate, $d)); 

Wenn ich das Datum als Eingabe: 2016.08.04 als $ CustDate, es gibt mir den gleichen Wert für die $ CustAddedDate.

Wo schraube ich das auf? Vielen Dank!

+0

'$ d' dort wird für nichts verwendet, da Ihr' $ CustDate' keine "relativen" Werte enthält. Es ist alles absolut Jahr/Monat/Tag. der zweite arg für strtotime() setzt eine Basiszeit für Dinge wie 'strtotime ('+ 1 Tag', $ some_point_in_time)' –

Antwort

2

Sie fügen die + months zusammen mit der $CustDate hinzu. Geben Sie das $Cusdate als zweites Argument in der Addition an.

$CustAddedDate = date('Y-m-d', strtotime("+" . $months . " Months", strtotime($CustDate))); 
                    //^add this with the addition 

Oder die DateTime Variante:

$date = new DateTime($CustDate); 
$date->modify('+ ' . $months . ' Month'); 
$CustAddedDate = $date->format('Y-m-d'); 
echo $CustAddedDate; 
1
$CustDate=$_POST['formYear'] . "-" . $_POST['formMonth'] . "-" . $_POST['formDay']; 

$months=$_POST['formMonthsAdded']; 

$d="+" . $months . " Months"; //not strtotime time here! 

$CustAddedDate=date("Y-m-d", strtotime($d,strtotime($CustDate)));//watch the order of arguments and missing strtotime of the existing date 
2

Anmerkung:

$d = strtotime('2016-03-02'); // March 2nd, 2016 -> 1456898400 

echo date('Y-m-d', strtotime('+1 day', $d)); -> 2016-03-03 
echo date('Y-m-d', strtotime('2010-01-02', $d)); -> 2010-01-02 

Das zweite Argument für strtotime() eine Zeitbasis für alle "relative" Zeitwert eingestellt, wie +1 day oder yesterday. Da Sie ein absolutes Datum übergeben, 2016-08-04, gibt es kein "relatives" Maß, auf dem irgendetwas basiert, und Ihr absolutes Datum wird in seiner Gesamtheit für die Umwandlung verwendet.

Wenn Sie diese absolute Datum einstellen möchten, haben Sie so etwas wie

echo date('Y-m-d', strtotime('2016-08-04 + 1 day')) -> 2016-08-05 

zum Beispiel zu tun Betten Sie die Datumsmathematik in die Zeichenfolge ein, die Sie in strtotime übergeben, und nicht in das zweite Argument.