用户定义的月份添加到给定日期

时间:2016-08-04 21:53:45

标签: php date 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提供相同的值。

我在哪里搞砸了?谢谢!

3 个答案:

答案 0 :(得分:2)

您将+ 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;

答案 1 :(得分: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()的第二个参数为任何“相对”时间值设置时间基础,例如+1 dayyesterday。由于您传递的是绝对日期2016-08-04,因此没有“相对”度量可以基于任何内容,并且您的绝对日期将全部用于转换。

如果要调整绝对日期,则必须执行类似

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

e.g。将日期数学嵌入到您传入strtotime的字符串中,而不是在第二个参数中。

答案 2 :(得分:1)

$scope.foo.someFN()