2016-10-24 2 views
2

Если у меня есть массив элементов, как это:форматировщик asDateTime в yii2

[PERKIRAAN_SELESAI] => 24/10/2016 09:38 

Затем я хочу сохранить в формат даты и времени в MySQL, который YYYY-MM-DD H: S, => 2016-10 -24 9:38

Как справиться с этим, Yii2 Теперь в BeforeSave(), я использую это:

$this->perkiraan_selesai = Yii::$app->formatter->asDateTime(strtorime($this->PERKIRAAN_SELESAI), "php:Y-m-d H:s"); 

Но, до сих пор не работает. Пожалуйста.

ответ

4

Прежде всего, я вижу 2 ошибки в коде:

Дата
  • 2016-10-24 09:38 выглядит как формат Y-m-d H:i, не Y-m-d H:s. Проверьте PHP date функции docs для интерпретации этих букв.

  • strtorime должно быть strtotime, но я думаю, что это опечатка не в оригинальном коде, просто здесь, в почте.

Что касается вашей проблемы, проверьте это related question on SO. Кажется, что проблема связана с обработкой косой черты (/). Вместо того чтобы заменить его - вручную, я нашел решение с родным классом DateTime намного лучше.

Использование простой PHP:

$date = \DateTime::createFromFormat('d/m/Y H:i', '24/10/2016 09:38')->format('Y-m-d H:i'); 

Использование Yii2 форматировщик:

$date = Yii::$app->formatter->asDateTime(\DateTime::createFromFormat('d/m/Y H:i', '24/10/2016 09:38'), 'php:Y-m-d H:i'); 

Просто замените эту дату вашего значения.

Значение $date: 2016-10-24 09:38 как ожидалось.

+1

Большое вам спасибо. –