TWIG日期时间区域设置语言

时间:2013-07-25 14:24:34

标签: php datetime symfony locale twig

TWIG文件中的

     {{ comments.created|date('l, F j, Y') }}

     Thursday, July 25, 2013

显示默认语言环境英语。我们如何以其他语言格式显示。德语,土耳其语等。

2 个答案:

答案 0 :(得分:0)

使用以下代码片段创建您自己的 Twig 函数 locale_date。它从 Symfonys Request 对象读取当前语言环境并使用 PHPs IntlDateFormatter 格式化给定的日期。

<?php

namespace App\Twig;

use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;

class LocaleDateExtension extends AbstractExtension {

    private $requestStack;

    public function __construct(RequestStack $requestStack) {
        $this->requestStack = $requestStack;
    }

    public function getFilters(): array {
        return [
            new TwigFilter('locale_date', [$this, 'localeDate']),
        ];
    }

    public function getFunctions(): array {
        return [
            new TwigFunction('locale_date', [$this, 'localeDate']),
        ];
    }

    public function localeDate(\DateTimeInterface $date, $format) {
        $formatter = new \IntlDateFormatter(
                $this->requestStack->getCurrentRequest()->getLocale(),
                \IntlDateFormatter::NONE,
                \IntlDateFormatter::NONE
        );
        $formatter->setPattern($format);
        return $formatter->format($date);
    }

}

在 Twig 中的使用:

{{ blog.createdAt|locale_date('d. MMMM yyyy') }}

Twig 变量必须是一个 DateTime 对象。

答案 1 :(得分:-2)

只需设置所需的格式

即可
{{ comments.created|date('d.m.Y') }}