Twig Date Filter Issue |输出错误

时间:2018-01-07 13:51:01

标签: symfony date datetime filter twig

我正在研究Symfony应用程序并使用Twig进行布局。

我面临错误的输出问题我谷歌但无法找到解决方案。

我有约会和时间时间201801031400我用过这个

{{ val.start_date|date("m/d/Y") }}

但输出错误10/27/8364

当我使用此{{ "now"|date("m/d/Y") }}时,它会给我正确的输出

提前致谢!

3 个答案:

答案 0 :(得分:1)

您需要Twig的功能来实现这一目标,您可以看到如何注册分机here

TwigExtension

namespace My/Project/Twig/Extensions

class ProjectTwigExtension extends Twig_Extension {

    public function getFunctions() {
        return array(
            new Twig_SimpleFunction('convert_api_date', function($date) {
                return new DateTime($date);         
            }),
        );  
    }

    public function getName() {
        return 'ProjectTwigExtension'; //this is mandatory
    }        
}

枝杈

{{ convert_api_date('201801031400') | date('d/m/Y') }}
{{ convert_api_date('201801031400') | date('H:i') }}

答案 1 :(得分:0)

上面的答案完全可以,我只是我的解决方案代码。

First Twig日期过滤器不支持201801031400.因此,您必须自己进行扩展。

如何创建树枝延伸create twig extention

<?php

// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;

class DateParserFilter extends \Twig_Extension
{
    public function getFilters ()
    {
        return array(
            new \Twig_SimpleFilter('parse_date', array($this, 'parseDate'))
        );
    }
    public function parseDate ($string, $formats)
    {
        if (is_string($formats))
        {
            $formats = array($formats);
        }
        foreach ($formats as $format)
        {
            $dateTime = \DateTime::createFromFormat($format, $string);
            if ($dateTime !== false)
            {
                return $dateTime;
            }
        }
        return $string;
    }
    public function getName ()
    {
        return "parse_date";
    }
} 

在此之后首先使用您自己的扩展过滤器,然后使用twig内置日期过滤器示例显示如下:)

{{ val.start_date | parse_date(["YmdHi", "d/m/Y H:i"]) | date("M d, Y") }}

它取决于你的情况我有[2018] [01] [03] [14] [00] = [Y] [m] [d] [H] [i]

希望它会对你有所帮助:)。

此扩展程序的来源 - link

答案 2 :(得分:-2)

您必须将unix时间戳值除以1000。

我仍然不确定它的相关内容,但这项操作是由权威的在线转换器使用,很可能面临同样的问题。 由于这个答案Converting a UNIX Timestamp to Formatted Date String,我得出了这个结论。

以下是您的unix时间戳正确的证据:

1)来自www.freeformatter.com

2)来自www.epochconverter.com

由于时区,数据略有不同。必须考虑到这一点。

写在评论中,我为什么要除以1000.我自己会感兴趣。