添加到给定日期的用户定义月份
user defined months added to given date
我正在尝试将用户定义的月数添加到之前添加的日期。 $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));
如果我将日期输入为:2016-08-04 作为 $CustDate,它会为我提供相同的 $CustAddedDate 值。
我哪里搞砸了?谢谢!
您将 + months
与 $CustDate
一起添加。提供 $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;
$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
注:
$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()
的第二个参数为任何 "relative" 时间值设置时间基础,例如 +1 day
或 yesterday
。由于您传递的是绝对日期 2016-08-04
,因此没有任何 "relative" 衡量标准,并且您的绝对日期将完整用于转换。
如果你想调整那个绝对日期,你必须做类似
的事情
echo date('Y-m-d', strtotime('2016-08-04 + 1 day')) -> 2016-08-05
例如将日期数学嵌入到您传递给 strtotime
的字符串中,而不是在第二个参数中。
我正在尝试将用户定义的月数添加到之前添加的日期。 $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));
如果我将日期输入为:2016-08-04 作为 $CustDate,它会为我提供相同的 $CustAddedDate 值。
我哪里搞砸了?谢谢!
您将 + months
与 $CustDate
一起添加。提供 $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;
$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
注:
$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()
的第二个参数为任何 "relative" 时间值设置时间基础,例如 +1 day
或 yesterday
。由于您传递的是绝对日期 2016-08-04
,因此没有任何 "relative" 衡量标准,并且您的绝对日期将完整用于转换。
如果你想调整那个绝对日期,你必须做类似
的事情echo date('Y-m-d', strtotime('2016-08-04 + 1 day')) -> 2016-08-05
例如将日期数学嵌入到您传递给 strtotime
的字符串中,而不是在第二个参数中。