Как получить разницу в днях в ветке

  • как получить разницу дней с текущим днем.

  • Твиттер At: «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 в форме дней назад.

Обновил мой проект, установив 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

person afeef    schedule 15.06.2015    source источник
comment
Почему бы не рассчитать это в бэкэнде? Это даст вам гораздо больше гибкости, и вы сможете легко изменить его позже, не касаясь шаблона.   -  person Nat Naydenova    schedule 15.06.2015
comment
я думаю, что Symfony не может решить разницу в датах   -  person afeef    schedule 15.06.2015
comment
Что ж, здесь вам не нужны специальные функции Symfony2 — вы можете сделать это с помощью чистого PHP. Взгляните на это решение stackoverflow.com/questions/1416697/   -  person Nat Naydenova    schedule 15.06.2015
comment
Можете ли вы помочь найти разницу в днях   -  person afeef    schedule 15.06.2015
comment
я написал в Твиттере: 22 февраля 2015 г., 09:56:42. Дата   -  person afeef    schedule 15.06.2015


Ответы (3)


Я попробовал этот код, и он работает.

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

Вам нужно использовать фильтры, а не методы для ваших объектов. И вам нужно использовать фильтр time_diff:

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

Чтобы это заработало, вам нужно сначала установить twig-extensions через композитор:

composer require twig/extensions

а затем включите его в сервисный контейнер с соответствующим тегом:

services:
    app.twig.extension.date:
        class:        Twig_Extensions_Extension_Date
        tags:
             - { name: 'twig.extension' }
person Michael Sivolobov    schedule 15.06.2015
comment
Фильтр time_diff не существует в пакетной ошибке - person afeef; 15.06.2015
comment
у меня есть реферальные документы symfony: twig.sensiolabs.org/doc/extensions/date.html - person afeef; 15.06.2015
comment
когда я использую $twig-›addExtension(new Twig_Extensions_Extension_Date()); в контроллере выдает ошибку 503 - person afeef; 15.06.2015
comment
Я обновил свой ответ, чтобы показать вам, как зарегистрировать это расширение в контейнере. - person Michael Sivolobov; 15.06.2015
comment
все еще ошибка 503, которую я сделал так: acme.twig.acme_extension.date: class: Twig_Extensions_Extension_Date tags: - {name: 'twig.extension'} - person afeef; 15.06.2015
comment
я использую в сервисах service.yml: acme.twig.acme_extension: class: Acme\biztradeshowsBundle\Twig\AcmeExtension tags: - {name: twig.extension} - person afeef; 15.06.2015
comment
Вам нужно установить его через композитор. Я снова обновил свой ответ. Вы также можете реализовать свой собственный фильтр и зарегистрировать его в контейнере. - person Michael Sivolobov; 15.06.2015
comment
еще 503 у меня есть компоновщик установщика тогда тоже - person afeef; 15.06.2015
comment
Ваша ошибка происходит из другого места. Я только что проверил свой ответ, и он работает. Как я уже говорил: если вы не можете настроить twig-расширения, вы можете создать собственное расширение и использовать его. - person Michael Sivolobov; 15.06.2015
comment
Esque c'est возможных переводов "назад"? - person famas23; 17.07.2017

Если дата исходит от объекта, вы можете просто:

{{ entity.days }}

И в вашей сущности просто реализуйте:

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