PHP:将 months/days/years 添加到用户提供的日期

PHP: Add months/days/years to user supplied date

***** 已解决 *****

我有一个小程序,我从用户那里获取日期 - (mm/dd/yyy) - 然后允许他们添加 x 天、月或年。我一直在尝试使用 'strtotime' 函数,但不确定我是否理解正确。

我的代码如下。例如,$od(原始日期)是 7/24/2015。 $d、$m 和 $y 变量是从用户填写的表单中读取的。这些可以是 0 或用户提供的值。

在这个简单的任务上花费几个小时之前,我想我会问我是否应该以不同的方式and/or使用另一个函数来处理这个问题。

    // Function to determine new date
function newDate($od, $d, $m, $y) { 
    $newDate = Date($od, strtotime('+ $d days'));
    $newDate = Date($od, strtotime('+ $m months'));
    $newDate = Date($od, strtotime('+ $y years'));

    if ($od != $newDate) {
        return $newDate;
    }
    else if ($od == $newDate ){
        return '[no change]';
    }
    else {
        return '[error occurred]';
    }
}

编辑:现在尝试使用建议的间隔日期。能不把区间字符串一起解析吗?我觉得这应该可行(导致一些 'non-object' 错误):

    $newDate = $od;
    $newDate->add(new DateInterval('P'.$m.'M'.$d.'D'.$y.'Y'));
    echo $newDate;
    if ($od != $newDate) {
        return $newDate->format('mm/dd/yyyy');

编辑:我想通了 - 字符串中不能有“0”,所以函数不会像我希望的那样干净。

***** 已解决 *****

正确的方法:DateTime::add -- date_add — 向 DateTime 对象添加天数、月数、年数、小时数、分钟数和秒数 http://php.net/manual/en/datetime.add.php 使用本机函数总是最快的,在您的情况下似乎是正确的方法!