Cakephp 3 предоставляет поля даты и времени в объекте frozentime

#php #mysql #cakephp #cakephp-3.0 #cakephp-3.2

#php #mysql #cakephp #cakephp-3.0 #cakephp-3.2

Вопрос:

Я использую cakephp 3.2, и когда я извлекаю данные с помощью запроса find, он предоставляет поля даты в этом формате

 Array
(
[0] => CakeI18nFrozenDate Object
    (
        [date] => 2016-08-01 00:00:00
        [timezone_type] => 3
        [timezone] => UTC
    )
)
  

и поля времени в frozentime

 CakeI18nFrozenTime Object
(
 [date] => 2016-10-11 10:00:00
 [timezone_type] => 3
 [timezone] => UTC
)
  

Мне нужна общая настройка или глобальное решение для всего сайта. Поэтому, когда я извлекаю данные с помощью запроса find из базы данных, он должен предоставить мне дату и время в простом формате без какого-либо объекта frozendate.

вот так

 Array(
 [0] => 2016-08-01
)
  

Комментарии:

1. Ни один из ответов на сегодняшний день, похоже, не соответствует запросу OP о том, что «Мне нужна общая настройка или глобальное решение … поэтому, когда я извлекаю данные… это должно дать мне дату и время в простом формате без какого-либо объекта frozendate «. Текущие ответы требуют изменения кода везде, где используется дата.

Ответ №1:

Просто вызовите ->format('Y-m-d') свой CakeI18nFrozenDate объект.

Нет необходимости в CakeI18nFrozenDate::setToStringFormat() или $this->Time->format()

Комментарии:

1. Хотел бы добавить, что CakeI18nFrozenTime Datetime::diff() это также является допустимым аргументом.

Ответ №2:

Вы также можете использовать TimeHelper для форматирования даты и времени в представлении

Пример

 echo $this->Time->format(
  $YourDateTimeVariable, #Your datetime variable
  'Y-MM-d'               #Your custom datetime format
);
  

TimeHelper Подробная информация о функции CakePHP здесь

Ответ №3:

В boostrap.php добавить

 CakeI18nFrozenDate::setToStringFormat('yyyy-MM-dd');
  

тем не менее, он поставляется с объектом forzenDate с теми же параметрами, но когда вы будете печатать в представлении, он будет печатать правильный формат

 echo $var->created;  // print: 2016-08-01
  

Ссылка на даты Синтаксис формата Datetime

Ответ №4:

Вы можете напрямую распечатать объект date в любом пользовательском формате даты, используя встроенную функцию i18nFormat.

 $frozenDateObj->i18nFormat('dd-MMM-yyyy');
  

Используйте ссылку на синтаксис datetime для дополнительной настройки