时间显示的格式?

时间:2013-04-28 22:42:10

标签: symfony sonata-admin

我正在使用symfony2和sonata-admin软件包进行应用程序。

public function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('fromDate');

它显示这样的时间

September 1, 2013 02:00

所以我改变了

 -  ->add('fromDate');
 +  ->add('fromDate',null,array('format' => 'yyyy-MM-dd HH:mm:ss'))

但它仍然显示相同。

请告诉我如何使用格式进行时间显示?

7 个答案:

答案 0 :(得分:4)

尝试使用

->add('fromDate','datetime',array('date_format' => 'yyyy-MM-dd HH:mm:ss'))

顺便说一句,相关代码是here。我认为您的format选项会被系统覆盖,因此使用date_format代码非常重要。对于应用程序范围的解决方案,请查看this question

答案 1 :(得分:3)

我知道这是一个老话题,但我希望它会帮助某人......

尝试添加这个,就像carzogliore说的那样(但是从日期时间错过了引号):

->add('fromDate', 'datetime', array('format' => 'yyyy-MM-dd HH:mm:ss'))

答案 2 :(得分:2)

如果您使用SonataIntlBundle,则日期格式为:

$list->add('createdAt', 'date', array(
    'pattern' => 'yyyy-MM-dd',
))

https://sonata-project.org/bundles/intl/master/doc/reference/datetime.html

中描述

答案 3 :(得分:2)

上面没有任何内容对我有用,所以我冒险检查页面源,它​​指向我使用的模板:

<!-- START
    fieldName: date
    template: SonataAdminBundle:CRUD:list_date.html.twig
    compiled template: SonataAdminBundle:CRUD:list_date.html.twig
    -->
<td class="sonata-ba-list-field sonata-ba-list-field-date" objectId="1">11.03.17</td>
<!-- END - fieldName: date -->

在检查模板后,我找到了正确的选项归档名称:

{%- elseif field_description.options.format is defined -%}

所以我制作了像这样的管理员代码

->add('date', null, ['format' => 'd/m/Y'])

并且有效。

请注意,格式是常规的date()格式,并且必须使用单个占位符标记,例如y年,因为yyyy生成2017201720172017。< / p>

答案 4 :(得分:0)

您必须指明“DateTime”是您要使用的类型,然后使用格式键,例如:

->add('fromDate',datetime,array('format' => 'yyyy-MM-dd HH:mm:ss'))

在内部,Sonata将使用list_datetime.html.twig,因为您将“Datetime”称为类型且包含格式选项。下面你可以看到list_datetime.html.twig奏鸣曲基础实现:

{% extends admin.getTemplate('base_list_field') %}

{% block field %}
{%- if value is empty -%}
    &nbsp;
{%- elseif field_description.options.format is defined -%}
    {{ value|date(field_description.options.format) }}
{%- else -%}
    {{ value|date }}
{%- endif -%}
{% endblock %}

答案 5 :(得分:0)

我的“问题”与众不同。 因为我将sonata intl包激活,所以它使用它来格式化日期时间列表。

->add('startAt', 'datetime', array(
                'dateType' => IntlDateFormatter::LONG,
                'timeType' => IntlDateFormatter::SHORT
            ))

答案 6 :(得分:0)

在现代版本的Sonata中,我设法使其工作如下:

$listMapper->add('dateadd', 'datetime', array('format' => 'y-m-d H:m:s'));