Smartyで日付をループ出力させる
予約システムなどを作るとき、現在の日時から増減させたリストを出したいシーンがよくあります。JavaScriptという手もありますが、環境に依存するので、Smartyを使ったシステムページなら、簡単にバリっと出せます。
ここでのループにはsectionを使います。name属性は適当でいいです。
1 2 3 | {section name=time start=$smarty.now loop=$smarty.now+2592000 step=86400} {$smarty.section.time.index|date_format:"%m月 %d日"}<br /> {/section} |
これだけで、ひとまずはこんなBR改行のリストが出力されます。
09月 17日
09月 18日
09月 19日
09月 20日
09月 21日
09月 22日
日数は、now+2592000の部分で指定します。これは秒数で、今から起算して+2592000秒…つまり30日分です。一週間なら60×60×24×7=604800というように計算します。
stepは、何秒ずつステップ(ジャンプ)するかの指定です。例では日付リストなので、24時間(86400秒)で指定しています。
これを応用すれば、たとえばラジオボタンでもプルダウンリストでも、自在に出力できますね。
プルダウンリストの例
1 2 3 4 5 6 | <select> <option value="--" selected="selected">--月--日</option> {section name=time start=$smarty.now loop=$smarty.now+2592000 step=86400} <option value="{$smarty.section.time.index|date_format:"%m月 %d日"}">{$smarty.section.time.index|date_format:"%m月 %d日"}</option> {/section} </select> |
広告