smarty中的日期格式(没有前导零的月份)

时间:2013-06-19 16:18:58

标签: smarty

现在,我的日期显示如下:

19\06\2013

我想要的是:

19\6\2013

我目前的智能代码是:

 {$variable|date_format:"%e\%m\%Y"}

我尝试使用%n作为月份(我假设任何适用于php的东西都可以在smarty中运行)但它没有给我任何结果。

如何在Smarty中显示没有前导零的月份?有没有解决方案?我不想在我的php文件中编辑和格式化日期。

2 个答案:

答案 0 :(得分:8)

今天我遇到同样的问题,这对我有用......

Windows服务器

此解决方案似乎仅适用于基于Windows的服务器(在我的情况下为localhost)。

{$variable|date_format:"%d\%#m\%Y"}

将哈希#放在字母'm'之前。

我正在使用Smarty v3

Linux服务器:

我将项目移动到远程服务器(可能是linux)并且哈希标志停止工作。我找到了另一个解决方案,只是在字母'm'之前加上连字符-

{$variable|date_format:"%d\%-m\%Y"}

这适用于Linux,但不适用于Windows。

基于PHP的跨平台解决方案:

但是因为smarty是一个PHP插件,所以我们可以使用所有的PHP函数。所以这是我发现的另一种解决方案,也许不是那么优雅,但似乎无处不在。

{assign var="dateTime" value=$variable|strtotime}
{*
or shorter:
{$dateTime=$variable|strtotime}
*}
<p>{"j/n/Y"|date:$dateTime}</p>

注意:

以上解决方案适用于格式化日,但也没有前导零:

{$variable|date_format:"%-d vs %d vs %#d"}

答案 1 :(得分:0)

{$ variable | date_format:“ j.n.Y ”:“”:“任何字符串 - 不是strftime或auto ”}

然后您可以像php function date()一样编写日期格式。

smarty_modifier_date_format($string, $format=null, $default_date='', $formatter='auto')