3

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

19\06\2013

我想要的是这个:

19\6\2013

我目前的聪明代码是:

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

我尝试使用 %n 这个月(我认为任何适用于 php 的东西都可以在 smarty 中使用),但它没有给我任何结果。

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

4

2 回答 2

9

今天我有同样的问题,这对我有用......</p>

视窗服务器

该解决方案似乎仅适用于基于 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"}
于 2013-09-16T12:03:55.547 回答
0

{$variable|date_format:" jn Y ":"":"任何字符串 - 不是 strftime 或 auto "}

然后你可以像php 函数 date()那样编写日期格式。

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

于 2014-02-27T16:09:13.717 回答