2016-08-04 9 views
1

以前に追加された日付にユーザー定義の月数を追加しようとしています。 $ CustDateは、以前の形式のYYYY-MM-DD形式です。指定した日付にユーザー定義の月が追加されました

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

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

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

私のように日付を入力した場合:$ CustDateとして2016年8月4日、それは私に$ CustAddedDateに同じ値を示します。

ここで私はこれを嫌っていますか?ありがとう!

+0

あなたの '$ CustDate'には"相対 "値が含まれていないので、' $ d'は何も使われていません。すべての年/月/日が絶対的です。 strtotime()の2番目の引数は 'strtotime( '+ 1 day'、$ some_point_in_time)'のようなものの基本時刻を設定します。 –

答えて

2

$CustDateと一緒に追加します。追加の第2引数として$Cusdateを指定します。

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

またはDateTimeバリアント:

$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

$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 

strtotime()ための2番目の引数が+1 dayような任意の "相対" 時間値のための時間基準を設定しますまたはyesterday。絶対日付である2016-08-04を渡しているので、何かの基礎となる相対的な尺度はなく、あなたの絶対日付は変換のために完全に使用されます。

あなたがその絶対的な日付を調整したい場合は、例えば

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

ような何かをしなければなりませんstrtotimeに渡す文字列に日付計算を埋め込み、2番目の引数には埋め込みません。

関連する問題