如何在Twig中获取天数差异

10
  • 如何从当前日期获取天数差异。

  • tweetedAt: "2015-02-22 09:56:42"。

twig

{% 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

为什么不在后端计算呢?这样可以让你拥有更多的灵活性,而且稍后你可以轻松地进行更改,而无需触及模板。 - Nat Naydenova
我认为Symfony无法解决日期差异问题。 - afeef
好的,您在这里不需要Symfony2的自定义功能-您可以使用纯PHP来完成此操作。请查看此解决方案https://dev59.com/xHM_5IYBdhLWcg3wWRoF - Nat Naydenova
你能帮忙找出日期差异吗? - afeef
我已经在推特上发布了:“2015年2月22日09:56:42”。日期。 - afeef
3个回答

15

我尝试了这段代码,它可以正常工作。

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

9

您需要在对象上使用过滤器而不是方法。同时,您需要使用 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' }

我有Symfony的参考文档:http://twig.sensiolabs.org/doc/extensions/date.html - afeef
当我在控制器中使用 $twig->addExtension(new Twig_Extensions_Extension_Date()); 时,它会出现 503 错误。 - afeef
我在service.yml中使用了以下服务: acme.twig.acme_extension: class: Acme\biztradeshowsBundle\Twig\AcmeExtension tags: - { name: twig.extension } - afeef
你需要通过composer安装它。我再次更新了我的答案。你也可以实现自己的过滤器并在容器中注册它。 - Michael Sivolobov
仍然是503错误,我已经安装了Composer。 - afeef
显示剩余5条评论

3
如果日期来自实体,你可以直接:
{{ entity.days }}

在您的实体中只需实现以下内容:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接