date_format

日付と時間を strftime() のフォーマットに基づいて整形します。日付を Unix タイムスタンプDateTime オブジェクト、 MySQL タイムスタンプ、そして月・日・年で構成された (PHP の strtotime() でパース可能な) 文字列として変数に割り当てる事ができます。デザイナーは、 date_format を使用することで日付の書式設定を自由にコントロールできます。 date_format に渡した日付が空で 第2パラメータが渡された場合、その日付をフォーマットします。

パラメータの位置 必須 デフォルト 概要
1 string No %b %e, %Y 日付の表示フォーマット
2 string No n/a 入力が空のときのデフォルトの日付

注意

Smarty-2.6.10 以降、date_format に渡された数値は 常に (MySQL タイムスタンプは例外です。以下を参照してください) Unix タイムスタンプとして解釈されるようになりました。

Smarty-2.6.10 より前は、PHP の strtotime() がパース可能な数値文字列 (YYYYMMDD のような形式) は、 タイムスタンプではなく日付文字列として解釈されることもあります (strtotime() の実装に依存します)。

唯一の例外は、mysql タイムスタンプです。 これは数値のみで、文字数は14文字 ("YYYYMMDDHHMMSS") です。 mysql タイムスタンプは unix タイムスタンプより優先されます。

プログラマーズノート

date_format は、本質的には PHP の strftime() 関数のラッパーです。PHP をコンパイルしたシステム上の strftime() の実装によっては、利用可能な変換指定子が多少変わる場合があります。 有効な指定子の一覧は、システムの man ページを参照してください。 Windows 上でも一部の指定子をエミュレートしており、%D, %e, %h, %l, %n, %r, %R, %t, %T が使用できます。

例 5.8. date_format


<?php

$config['date'] = '%I:%M %p';
$config['time'] = '%H:%M:%S';
$smarty->assign('config', $config);
$smarty->assign('yesterday', strtotime('-1 day'));

?>

   

このテンプレートでは、 $smarty.now を使用して現在時刻を取得しています。


{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
{$smarty.now|date_format:$config.date}
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:$config.time}

   

出力


Jan 1, 2022
01/01/22
02:33 pm
Dec 31, 2021
Monday, December 1, 2021
14:33:00

   

date_format の変換指定子

$smarty.nowstrftime(){html_select_date} および 日付に関するヒント のページも参照してください。