如何在fatfree模板中格式化日期?

时间:2017-03-09 22:38:18

标签: php html fat-free-framework

是否有可能以及如何使用它自己的函数在模板内的FatFree框架中格式化日期?

<repeat group="{{ @rows }}" value="{{ @row }}">
      <tr>
         <td>{{ @row.idbox }}</td>
         <td>{{ @row.code }}</td>
         <td>{{ @row.createon }}</td>//date to format
         <td>{{ @row.senton }}</td>
         <td>{{ @row.price }}</td>
      </tr>
</repeat>

2 个答案:

答案 0 :(得分:0)

该框架不提供日期格式化的专用过滤器。

格式过滤器

您可以使用format语法,但语法有点奇怪,因为它主要用于本地化字符串:

与本地化字符串:

index.php

$f3->PREFIX='dict.';
$f3->LOCALES('dict/');
$tpl=Template::instance();
echo $tpl->render('template.html');

dict/en.ini

order_date = Order date: {0, date}

template.html

<!-- with a UNIX timestamp -->
<td>{{ dict.order_date, @row.createon | format }}</td>

<!-- with a SQL date field -->
<td>{{ dict.order_date, strtotime(@row.createon) | format }}</td>

没有本地化字符串:

template.html

<!-- with a UNIX timestamp -->
<td>{{ '{0, date}', @row.createon | format }}</td>

<!-- with a SQL date field -->
<td>{{ '{0, date}', strtotime(@row.createon) | format }}</td>

自定义过滤器

幸运的是,该框架使我们有可能创建custom filters

index.php

$tpl=Template::instance();
$tpl->filter('date','MyFilters::date');
echo $tpl->render('template.html');

myfilters.php

class MyFilters {

  static function date($time,$format='Y-m-d') {
    if (!is_numeric($time))
      $time=strtotime($time);// convert string dates to unix timestamps
    return date($format,$time);
  }

}

template.html

<!-- default Y-m-d format -->
<td>{{ @row.createon | date }}</td>

<!-- custom format Y/m/d -->
<td>{{ @row.createon, 'Y/m/d' | date }}</td>

答案 1 :(得分:0)

使用标准的php date()函数。前面的答案是获得相同结果的一种非常复杂的方法:

{{  date('d M Y',strtotime(@row.createon))  }}

你需要使用strtotime的原因是因为F3的:: template视图将变量呈现为字符串,即使它们是数据库中的timestamp / datetime。