Php Symfony2日期时间表单
表单中的datetime字段出现了一些奇怪的问题我刚刚将php版本更新为5.5.29 表单字段:Php Symfony2日期时间表单,php,symfony,datetime,Php,Symfony,Datetime,表单中的datetime字段出现了一些奇怪的问题我刚刚将php版本更新为5.5.29 表单字段: $customerReportForm->add('dateTo', 'date', [ 'data' => new \DateTime(), 'required' => false, 'widget' => 'single_text', 'label' => 'До', 'attr' => array('class' =&
$customerReportForm->add('dateTo', 'date', [
'data' => new \DateTime(),
'required' => false,
'widget' => 'single_text',
'label' => 'До',
'attr' => array('class' => 'datepicker', "data-date-format" => "yy-mm-dd")
]);
在开发控制台中,我看到表单[dateTo]:2015-09-18
在转储表单数据(提交后)时,我会看到日期和我选择的前一天:
2015-09-17
[日期]=>对象(日期时间){[日期]=>字符串(26)“2015-09-17 23:00:00.000000”[时区类型]=>int(3)[“时区”]=>字符串(13)“欧洲/莫斯科”]
在控制台日期命令中显示正确的日期:
->%日期
Pn Rgs 18 13:00:29 MSK 2015
在我尝试添加的表单中:“format'=>“MM/dd/yyyy”,它没有帮助,发布数据:form[dateTo]:09/18/2015
UPD 感谢,将时区重新配置为UTC和
'model_timezone' => 'UTC',
'view_timezone' => 'UTC',
在表单中修复了我的问题。这听起来很像时区或区域设置问题 前者可以通过表单字段上的
model\u timezone
和view\u timezone
进行检查,例如:
$customerReportForm->add('dateTo', 'date', [
// ...
'model_timezone' => 'UTC',
'view_timezone' => 'UTC',
]);
尝试将时区设置为UTC,看看您是否仍然遇到同样的问题。接下来,尝试查看您的系统(不是PHP)时区,然后确保PHP.ini文件中的date.timezone
设置与此匹配。如果这些都没有帮助,那么可能是区域设置
在内部,date
字段使用Locale
和IntlDateFormatter
实例来确保日期和时间的格式和读取正确。PHP用于此。像这样的问题有几点可能会让人知道:
除此之外的一切都是猜测。我遇到了一个类似的问题,您描述了从UTC到欧洲/伦敦的时区切换,根据DST同步。我非常怀疑这是区域设置错误,但如果你确定你没有在任何情况下操纵日期,那么检查也无妨。尝试将日期分隔符更改为/并让我知道它是如何运行的为什么“model\u timezone”=>“UTC”,“view\u timezone”=>“UTC”,成功了!谢谢你,伙计!php.ini中的时区设置为\Moscrow