问题 时间显示的格式?


我正在使用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'))

但它仍然显示相同。

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


10697
2018-04-28 22:42


起源

这应该是您的树枝模板的一部分。 - cheesemacfly
@cheesemacfly这只是一种方法,而不一定是最好的。 - likeitlikeit
@likeitlike好,渲染日期的方式应该是视图的一部分,因为它只有一个显示目的,或者我错过了什么? - cheesemacfly
例如,如果您进行国际化,最好使用系统范围的格式,例如 这里 - likeitlikeit


答案:


尝试使用

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

顺便说一句,相关的代码是 这里。我想你的 format 选项被系统覆盖,因此使用非常重要 date_format 代替。有关应用程序范围的解决方案,请查看 这个问题 太。


4
2018-04-29 22:07



非常感谢。这是非常有用的信息。 - whitebear
我想知道如何格式化unix时间戳和日期类型。使用“日期”类型工作并显示类似“2013年10月24日”的内容,但date_format不会更改它。有任何想法吗? - Onema


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

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

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


2
2017-07-23 11:49



'pattern' 为我做了 - NDM


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

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

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

2
2017-09-01 12:10





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

<!-- 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


2
2017-09-26 16:00





您必须指出“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 %}

0
2018-03-31 13:18





我的'问题'是不同的。 因为我将sonata intl bundle激活,所以它使用它来格式化日期时间列表。

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

0
2018-01-28 02:32