2010-07-14 48 views
10

我与约会:{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}smarty和约会

但如何获得20天后?

如果现在:2010 05 05 12:12:12,我希望显示2010 25 05 12:12:12

回答

6

使用strtotime() PHP函数和你的变量分配给智者。事情是这样的:

<?php 
$later = strtotime('+20 day'); 
$smarty->assign('later', $later); 
?> 

然后在模板:

{ $later|date_format:'%Y-%m-%d %H:%M:%S'} 
+0

谢谢,但我不能使用PHP代码。也许是只有Smarty的决定? – lolalola 2010-07-14 18:46:58

+0

现在有其他的答案,完全依赖于smarty并且不需要PHP代码 – skrilled 2014-10-07 20:15:14

18

{$smarty.now}是一个简单的时间戳(秒数自1970年以来)。所以,你可以尽可能多秒只是添加到它,你需要:

{$smarty.now+20*24*60*60|date_format:'%Y-%m-%d %H:%M:%S'} //+20 days 

这工作在Smarty3,如果不是在旧版本,那么你可能需要做数学与{assign}和/或{math}指令。

+0

这也适用于Smarty 2我可以确认。 – crmpicco 2013-01-21 13:26:21

3

您可以直接使用strtotime()作为修饰符。

{"+20 days"|strtotime|date_format:"Y/m/d"} 
1

在智者的新版本会的strtotime任何字符串你在前面加上

即而不是做{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}你也可以做{"now"|date_format:'%Y-%m-%d %H:%M:%S'}

从现年20天就日期,你可以这样做:

{"+20 days"|date_format:"%Y-%m-%d"}

-1

在智者测试:加1天,2天..... .365天在动态日期。

$one= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 1 day")); 
    $this->smarty->assign('one',$one); 

$two= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 2 day")); 
    $this->smarty->assign('two',$two); 
... 
.. 

$oneyear= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 365 day")); 
    $this->smarty->assign('oneyear',$oneyear); 
0
{assign var="iItemOne" value=$smarty.now} 
{assign var="iItemTwo" value=1296000} //60*60*24*15-> for 15 days 
{assign var="iSum" value=$iItemOne+$iItemTwo} 

{$iSum|date_format:'%Y-%m-%d %H:%M:%S'}