CakePHP:日期时间文本

问题描述:

我想插入一个日期时间使用简单的文本输入(而不是日期时间输入),但有一些错误。CakePHP:日期时间文本

例如,我将在此日期:

2015-09-07 15:10 

我的代码:

debug($this->request->data['created']); 
$post = $this->Posts->patchEntity($post, $this->request->data); 
debug($post->created); 

输出:

/home/mirko/Server/MeCms_Plugin/src/Controller/Admin/PostsController.php (line 158) 
'2015-09-07 15:10' 
/home/mirko/Server/MeCms_Plugin/src/Controller/Admin/PostsController.php (line 160) 
object(Cake\I18n\Time) { 

    'time' => '2013-03-07T15:10:00+0000', 
    'timezone' => 'UTC', 
    'fixedNowTime' => false 

} 

为什么会出现这种情况? 我怀疑在将字符串转换为Time对象时出现问题。

谢谢。

+0

如果你'$数据您能得到什么= $这个 - >请求 - >数据; $ data ['created'] = new Time($ data ['created']);''和''patchEntity' with'$ data'? (不要忘记添加'use Cake \ I18n \ Time;'。 – Holt

+0

Hi @Holt,这是有效的。为什么? –

+0

您是在修补一个新的空实体还是保存现有数据?如果是后者,你是否确信价值实际上正在发生变化?也就是说,你正在调试的是不是已经存在的价值?如果价值实际上正在改变,或者设置为空实体,我建议深入研究'\ Cake \ Database \ Type \ DateTimeType :: marshal()'并调试日期改变的地方。 – ndm

看着你的MySQL表的data type 例如:更改日期为VARCHAR(50)

或者试试这个代码:

$date = new DateTime($post->created); 
$srt_date = $date->format('Y-m-d H:i:s');