日付 (ヒント & 裏ワザ) - PHPプロ!マニュアル

Smartyマニュアル

ヒント & 裏ワザ - 日付

日付

経験上、Smarty に渡す日付は常に タイムスタンプ型 にしておくことをお勧めします。これにより、テンプレートデザイナーは date_format 修飾子で日付の書式を自由にコントロールできるようになります。 また、必要なら日付の比較も簡単に行えます。

例 18-4. date_format の使用

{$startDate|date_format}

出力はこのようになります。

Jan 4, 2009
{$startDate|date_format:"%Y/%m/%d"}

出力はこのようになります。

2009/01/04

テンプレートで日付を比較するには、タイムスタンプを使用します。

{if $order_date < $invoice_date}
   ...何かを行います
{/if}

テンプレートで {html_select_date} を使用する場合、 おそらくプログラマはフォームからの出力をタイムスタンプ型に変換したいでしょう。 それを行うのに役立つ関数を次に示します。

例 18-5. フォームの日付要素をUNIXタイムスタンプ型に変換する

<?php

// フォームの要素の名前が startDate_Day, startDate_Month, startDate_Year
// であると仮定します

$startDate makeTimeStamp($startDate_Year$startDate_Month$startDate_Day);

function 
makeTimeStamp($year=''$month=''$day='')
{
   if(empty(
$year)) {
       
$year strftime('%Y');
   }
   if(empty(
$month)) {
       
$month strftime('%m');
   }
   if(empty(
$day)) {
       
$day strftime('%d');
   }

   return 
mktime(000$month$day$year);
}
?>

{html_select_date} {html_select_time} date_format および $smarty.now も参照してください。

閲覧履歴



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報