Smarty如果声明日期?

时间:2012-02-17 00:33:06

标签: smarty

如果我有一个聪明的变量

{$test.date_created}

在智能模板中显示日期,例如:

2012年2月2日

在这个聪明的网站上,它说你可以用以下内容显示今天的日期。

{$smarty.now|date_format:'%m/%d/%Y'}

我如何在if语句中使用它来显示从今天起3天或更长时间的消息?

如果3天或更长时间,显示“旧”。如果没有,请显示“新建”。

2 个答案:

答案 0 :(得分:2)

您可以使用 strtotime() 获取与三天前相对应的时间戳,然后将其与您的邮件日期进行比较。例如,假设$message是您的消息记录,$message['date']是您必须检查的时间戳:

$isMessageOld = ($message['date'] <= strtotime('-3 days'));
$smarty->assign('isMessageOld', $isMessageOld);

然后,在你的模板中:

{if $isMessageOld} ... {/if}

我不是百分百肯定,但您也可以直接在Smarty中测试它。假设您已将$message传递给Smarty:

{if $message.date <= strtotime('-3 days')} ... {/if}

答案 1 :(得分:1)

您可以使用此$ smarty.now

轻松检查smarty中已通过的日期
$smarty.now|date_format:"%Y%m%d"

这是一个跨越旧(通过)日期

的示例
<{foreach from=$meetings item=m}>
<{if $smarty.now|date_format:"%Y%m%d" <= $m.date|date_format:"%Y%m%d"}>
  <tr>
    <td><{counter}></td>
    <td><{$m.title}> on </td>
    <td><{$m.date}></td>
  </tr>
<{else}>
  <tr>
    <td><strike><{counter}></strike></td>
      <td><strike><{$m.title}> on </strike></td>
      <td><strike><{$m.date}></strike></td>
  </tr>
<{/if}>
<{/foreach}>

我们需要在php中创建会议列表数组并将其分配给smarty

$meetings[0]['title'] = "Speech on Gandhi Janyanti";
$meetings[0]['date'] = "2-Oct-2011";
$meetings[1]['title'] = "Meet friend";
$meetings[1]['date'] = "10-Oct-2013";
$meetings[2]['title'] = "Goto USA";
$meetings[2]['date'] = "22-Oct-2013";
$meetings[3]['title'] = "Speech on Gandhi Janyanti";
$meetings[3]['date'] = "2-Oct-2014";
$meetings[4]['title'] = "Meeting with John";
$meetings[4]['date'] = "22-Oct-2014";
$meetings[5]['title'] = "Speech on Gandhi Janyanti";
$meetings[5]['date'] = "2-Oct-2015";
$meetings[6]['title'] = "Meeting with Uncle";
$meetings[6]['date'] = "22-Oct-2015";

$theme->assign("meetings",$meetings);
echo $theme->fetch("index.tpl");