问题描述:在创建表单时,需要将datetime字段格式化为yyyy-mm-dd hh:mm
格式。尝试使用如下代码:
$builder->add('beginDate', 'datetime', ['widget' => 'single_text', 'date_format' => 'yyyy-MM-dd HH:i']);
但实际效果未能达到预期。希望实现的格式为:
2014-08-25 22:37
是否有方法可以实现这一目标?
已经查阅了一些资料,但未找到适用于24小时制及分钟显示的例子。
解决方案一
尝试在日期时间字段定义中使用以下date_format
格式:
'yyyy-MM-dd HH:mm'
而非当前使用的:
'yyyy-MM-dd HH:i'
建议仔细检查PHP日期格式选项与Symfony表单构建器期望的RFC格式之间的差异,确保正确使用。
解决方案二
使用支持格式选项的HTML5日期时间格式:
$builder->add('beginDate', 'datetime', ['widget' => 'single_text', 'format' => 'yyyy-MM-dd HH:mm']);
当使用format
时,应将其与widget = single_text
一起使用,而非date_format
。
解决方案三
另一种尝试方法为:
$builder->add('beginDate', 'date', ['widget' => 'single_text', 'format' => 'yyyy-MM-dd H:mm']);
解决方案四
请确认在使用Twig或PHP进行显示时,是否涉及到了parameters.yml
和config.yml
中的本地化设置,或者Twig模板中的时间显示方式。更多关于时间区的信息,可参考:Twig时间过滤器文档。
解决方案五
尝试以下配置:
$builder->add('beginDate', 'datetime', ['widget' => 'single_text', 'format' => 'dd/MM/yyyy kk:mm']);
详细信息可参考:Symfony官方文档和ICU项目日期时间格式语法。
解决方案六
对于相同的问题,以下配置有效:
$builder->add('closingDate', DateTimeType::class, ['date_widget' => 'single_text', 'date_format' => 'dd.MM.yyyyTH:i', 'html5' => false]);
解决方案七
对于某些情况,以下方法也有效:
使用Symfony\Component\Form\Extension\Core\Type\DateType
;
$builder->add('beginDate', DateType::class, ['widget' => 'single_text', 'format' => 'yyyy-MM-dd', 'data' => new DateTime()]);