php add метод некорректно работает

1

Я занимаюсь изучением PHP, и у меня проблемы. Моя функция возвращает "вехи" с той же датой, в которую они были подключены. Я считаю, что неправильно использую метод add(). Спасибо.

PHPplayground: http://www.tehplayground.com/#cARB1wjth

$milestones = null;
$milestones = createMilestone($milestones, true, 10, "15-1-1", "birthday" );
var_dump( $milestones );

function createMilestone($milestones, $forward, $days, $startDate, $milestoneName ){
    if ( is_string($startDate)){
        $date = DateTime::createFromFormat("Y-m-d", $startDate );
    }else if(is_array($startDate) ){
        $date = $startDate["date"];
    }else{
        $date = $startDate;
    };

    $daysInterval = DateInterval::createFromDateString($days);
    if ($forward){
        $date->add($daysInterval);
    }else{
        $date->sub($daysInterval);
    }


    $milestones[$milestoneName]['date'] = $date;

    return $milestones;
}
  • 0
    Я не думаю, что вам нужно передавать $milestones в качестве аргумента вашей функции.
  • 0
    Неважно. Я не думаю, что мой комментарий правильный, и ошибка, вероятно, в какой-то другой части вашего кода. Можете ли вы опубликовать пример вывода для вашего кода?
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Вам необходимо использовать:

$daysInterval = DateInterval::createFromDateString($days . ' days');

Смотрите документ здесь для DateInterval и эту страницу для разнообразного форматирования даты ( так называемый относительный формат), вы можете использовать.

И BTW, если вы даете DateTime как "15-1-1", правильный формат не "Ymd" а "ymd " (нижний регистр " y ")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню