【问题标题】:How to get days difference in twig如何获得树枝的天差
【发布时间】:2015-06-15 07:32:57
【问题描述】:
  • 如何获取与当天的天数差异。

  • tweetedAt:“2015-02-22 09:56:42”。

树枝

{% for key,value in data.about %}
{% set tweets_date=(value.tweetedAt|date).date("now").format('%a') %}
{% endfor %}

我也试过

{% set dd='now'|date('d-m-Y') %}
{% set tweets_date=(value.tweetedAt|date).dd.format('%a') %}

最后我尝试了,但它给出了错误:

哈希键必须是带引号的字符串、数字、名称或括在括号中的表达式(值“{”的意外标记“标点符号”

{% set difference = {{ date("m/d/Y") }}.diff(date(value.tweetedAt)) %}
{% set leftDays = difference.days %}

错误:

<span class="small light_grey">{{tweets_date}}</span>

Impossible to invoke a method ("date") on a string variable ("June 6, 2015 01:06") in AcmeBundle
  • 如何在几天前的形式中获取与 tweet_date 的差异。

更新了我通过 composer 安装 twig/extensions 的项目

user@intermsh-OptiPlex-380:~$ composer require twig/extensions
Warning: This development build of composer is over 30 days old. It is recommended to update it by running "/usr/local/bin/composer self-update" to get the latest version.
Using version ~1.2 for twig/extensions
./composer.json has been updated
   Loading composer repositories with package information
   Updating dependencies (including require-dev)
   - Installing twig/twig (v1.18.2)
   Downloading: 100%         

   - Installing twig/extensions (v1.2.0)
   Downloading: 100%         
   Downloading: 100%         

twig/extensions suggests installing symfony/translation (Allow the time_diff output to be translated)
Writing lock file
Generating autoload files

【问题讨论】:

  • 为什么不在后端计算呢?它将为您提供更大的灵活性,并且您可以在以后轻松更改它而无需触摸模板。
  • 我认为 symfony 无法解决日期差异
  • 好吧,你在这里并不需要 Symfony2 的自定义功能——你可以用纯 PHP 做到这一点。看看这个解决方案stackoverflow.com/questions/1416697/…
  • 你能帮忙找出天差吗
  • 我发了推文:“2015-02-22 09:56:42”。日期

标签: php symfony twig twig-extension


【解决方案1】:

我试过这段代码,它可以工作。

{% set difference = date(value.tweetedAt|date('Y/m/d')).diff(date('now'|date('Y/m/d'))) %}
{% set leftDays = difference.days %}

【讨论】:

    【解决方案2】:

    您需要在对象上使用过滤器而不是方法。而且你需要使用time_diff过滤器:

    {%set tweets_date=value.tweetedAt|time_diff %}
    

    要使其正常工作,您首先需要通过 composer 安装 twig-extensions:

    composer require twig/extensions
    

    然后将其包含在带有适当标签的服务容器中:

    services:
        app.twig.extension.date:
            class:        Twig_Extensions_Extension_Date
            tags:
                 - { name: 'twig.extension' }
    

    【讨论】:

    • 过滤器“time_diff”在包错误中不存在
    • 我有 symfony 的参考文档:twig.sensiolabs.org/doc/extensions/date.html
    • 当我使用 $twig->addExtension(new Twig_Extensions_Extension_Date());在控制器中它给出 503 错误
    • 我更新了我的答案,向您展示如何在容器中注册此扩展。
    • 仍然是 503 错误,我完成了这样的操作:acme.twig.acme_extension.date: class: Twig_Extensions_Extension_Date tags: - { name: 'twig.extension' }
    【解决方案3】:

    如果日期来自实体,您可以:

    {{ entity.days }}
    

    在你的实体中实现:

    public function getDays()
    {
        return $this->date->diff(new DateTime)->format('%a');
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2015-06-26
      相关资源
      最近更新 更多