我正在研究Symfony应用程序并使用Twig进行布局。
我面临错误的输出问题我谷歌但无法找到解决方案。
我有约会和时间时间201801031400
我用过这个
{{ val.start_date|date("m/d/Y") }}
但输出错误10/27/8364
当我使用此{{ "now"|date("m/d/Y") }}
时,它会给我正确的输出
提前致谢!
答案 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时间戳正确的证据:
由于时区,数据略有不同。必须考虑到这一点。
写在评论中,我为什么要除以1000.我自己会感兴趣。