Добавьте дни к дате в CakePHP (2.6.x)

0

Как я могу легко добавить день к дате в CakePHP (2.6.x)? Если нет помощника или плагина, как это можно сделать с помощью кода?

Я пробовал это, но CakePHP не знает add -method:

$date = $this->request->data['Bill']['date']->add(new DateInterval('P1D'));
Теги:
date
cakephp

1 ответ

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

Вы близки, но вы не можете просто add() так, потому что дата в вашем массиве данных еще не является объектом DateTime, это просто простая строка. Если вы перенёте его как таковой, все будет хорошо. Так:

// Create a DateTime object from the date in the data array
$date = new DateTime($this->request->data['Bill']['date']);

Или если у вас есть раскрывающийся список день/месяц/год вместо текстового поля ввода:

$date = new DateTime(implode('-', array(
    $this->request->data['Bill']['date']['year'],
    $this->request->data['Bill']['date']['month'],
    $this->request->data['Bill']['date']['day']
)));

Затем у вас есть объект DateTime, и вы можете добавить к нему день:

// Add a day to this object
$date->add(new DateInterval('P1D');

Если вы хотите, чтобы эта новая дата изменила прежнюю, вы можете сделать что-то вроде этого, чтобы сохранить новую дату:

$this->request->data['Bill']['date'] = $date->format('Y-m-d');
  • 0
    Спасибо за ваш ответ :) К сожалению, я понимаю, что DateTime::__construct() expects parameter 1 to be string, array given как CakePHP, обрабатывает его как array . Любая идея?
  • 0
    @doonot У вас, вероятно, есть отдельные выпадающие списки дня / месяца / года, сгенерированные FormHelper тогда? Обновил мой ответ, чтобы охватить и эту ситуацию.
Показать ещё 3 комментария

Ещё вопросы

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