0

我正在select使用月份名称在 Smarty 模板中填充一个简单的 HTML 列表。一个时间戳对象被传递给模板。我希望传入的时间戳月份成为select. 传递的值可以作为int(1,2,3,etc...) 或string(jan,feb,mar,etc...) 传入。

要设置默认的选定值,我需要将传入的时间戳月份与我在模板中创建的时间戳进行比较。例如,要与当前月份进行比较,我会执行以下操作:

<option {if $smarty.now|date_format:"%b" = $passedInTimestamp['month']}selected{/if}>
    text
</option>

$smarty.now显然只适用于当前月份。我的<option>标签在 for 循环中,从 1 循环到 12。如何创建具有特定月份的时间戳以与传入的月份进行比较?

4

1 回答 1

1

如果我理解得很好,这就是你需要的:

<select>
{for $i=1 to 12}
    <option {if '1-'|@cat:$i:'-':'Y'|date|@strtotime|date_format:"%b" == $passedInTimestamp['month']}selected{/if}>
        {$i}
    </option>
{/for}
</select>

首先,我使用cat修饰符创建了几个月的日期字符串:

{'1-'|@cat:$i:'-':'Y'|date}
// will output 
// 1-1-2013   1-2-2013   1-3-2013 ....

然后我使用strtotime修饰符将其转换为 timstamp

{'1-9-2013'|@strtotime}
// will output 1377986400

最后,我date_format:"%b"像您上面所做的那样将其与您传入的时间戳月份进行了比较。

于 2013-09-26T04:07:35.250 回答