2010-07-14 4 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 и присвоить переменную Smarty. Что-то вроде этого:

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

Затем в шаблоне:

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

Спасибо, но я не могу с помощью PHP кода. Может быть, решение только с Smarty? – lolalola

+0

Теперь есть другие ответы, которые полностью полагаются на smarty и не требуют кода PHP – skrilled

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

3

Вы можете использовать strtotime() непосредственно в качестве модификатора.

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

В новых версиях Smarty будет 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

Испытано в Smarty: Добавить 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'}