【问题标题】:Format for time display?时间显示格式?
【发布时间】:2013-04-22 12:55:54
【问题描述】:

我正在使用 symfony2 和 sonata-admin bundle 制作应用程序。

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'))

但它仍然显示相同。

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

【问题讨论】:

  • 这应该是你的树枝模板的一部分。
  • @cheesemacfly 这只是一种方法,不一定是最好的。
  • @likeitlikeit 好吧,日期的呈现方式应该是视图的一部分,因为它只有一个显示目的,还是我遗漏了什么?
  • 例如,如果您进行国际化,则最好使用系统范围的格式,例如 here

标签: symfony sonata-admin


【解决方案1】:

尝试使用

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

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

【讨论】:

  • 我想知道如何执行此操作来格式化 unix 时间采样和日期类型。使用“日期”类型可以工作并显示类似“2013 年 10 月 24 日”的内容,但 date_format 不会改变它。有什么想法吗?
【解决方案2】:

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

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

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

【讨论】:

【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    我知道这是一个旧线程,但我希望它可以帮助某人......

    尝试添加这个,就像 carzogliore 说的那样(但日期时间中缺少引号):

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

    【讨论】:

      【解决方案5】:

      您必须指出“日期时间”是您要使用的类型,然后使用格式键,例如:

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

      在内部,Sonata 将使用 list_datetime.html.twig,因为您将“日期时间”作为类型并包含格式选项。下面你可以看到 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 %}
      

      【讨论】:

        【解决方案6】:

        我的“问题”不同。 因为我激活了奏鸣曲 intl 包,所以它使用它来格式化日期时间列表。

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

        【讨论】:

          【解决方案7】:

          在现代版本的奏鸣曲中,我设法使它像这样工作:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-29
            • 1970-01-01
            • 1970-01-01
            • 2022-08-08
            • 2017-03-26
            • 2012-08-07
            • 1970-01-01
            相关资源
            最近更新 更多