Я получаю дату с: {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
Но как получится через 20 дней?
Если теперь: 2010 05 05 12:12:12
, я хочу показать 2010 25 05 12:12:12
Я получаю дату с: {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
Но как получится через 20 дней?
Если теперь: 2010 05 05 12:12:12
, я хочу показать 2010 25 05 12:12:12
Используйте функцию strtotime()
php и назначьте свою переменную smarty. Что-то вроде этого:
<?php
$later = strtotime('+20 day');
$smarty->assign('later', $later);
?>
Затем в шаблоне:
{ $later|date_format:'%Y-%m-%d %H:%M:%S'}
{$smarty.now}
- простая временная метка (количество секунд с 1970 года). Таким образом, вы можете просто добавить столько секунд, сколько вам нужно:
{$smarty.now+20*24*60*60|date_format:'%Y-%m-%d %H:%M:%S'} //+20 days
Это работает в Smarty3, если не в более старых версиях, вам может понадобиться выполнить математику с директивами {assign}
и/или {math}
.
Вы можете использовать strtotime() непосредственно в качестве модификатора.
{"+20 days"|strtotime|date_format:"Y/m/d"}
В новых версиях 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"}
{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'}
Протестировано в 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);