日付と時間を
strftime()
のフォーマットに基づいて整形します。日付を Unix
タイムスタンプ
や 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 が使用できます。
Example 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 の変換指定子
%a - 現在のロケールに基づく短縮された曜日の名前
%A - 現在のロケールに基づく完全な曜日の名前
%b - 現在のロケールに基づく短縮された月の名前
%B - 現在のロケールに基づく完全な月の名前
%c - 現在のロケールに基づく適当な日付と時間の表現
%C - 世紀(年を100で割り、整数に丸めたもの。00から99)
%d - 10進数の日付(01から31)
%D - %m/%d/%yと同じ
%e - 月単位の日付を10進数で表したもの。日付が1桁の場合は、前に空白を一つ付ける。('1'から'31')
%g - 西暦の下二桁 [00,99]
%G - 西暦 [0000,9999]
%h - %bと同じ。
%H - 時間を24時間表示の10進数で(00から23まで)
%I - 時間を12時間表示の10進数で(01から12までの範囲)
%j - 年間での日付を10進数で表現 (001から366)
%k - 24時間表示の時間の一桁目に空白を入れる ( 0 から 23までの範囲)
%l - 12時間表示の時間の一桁目に空白を入れる ( 1 から 12までの範囲)
%m - 月を10進数で表現 (01から12)
%M - 分を10進数で表現
%n - 改行文字
%p - 指定した時間により `am' または `pm' 、または 現在のロケールに対応した文字列
%r - a.m.およびp.m.表記で表した時間
%R - 24時間表記で表した時間
%S - 10進数で表した秒
%t - タブ文字
%T - 現在の時間。%H:%M:%Sに等しい。
%u - 10進数表記の曜日で[1,7]の範囲。1が月曜日。
%U - 年間で何番目の週であるかを 10 進数で表現。年間で最初の日曜を最初の週の最初の日として数えます。
%V - ISO 8601:1988で規定された現在の年の週番号の10進数表現で 01から53までの範囲となります。 1は最初の週でその週は現在の年に 最低4日はあります。週は月曜日から始まります。
%w - 曜日を10進数で表現。日曜は0になります。
%W - 現在の年で何番目の週であるかを10進数で表現。 年間で最初の月曜を最初の週の最初の日として数えます。
%x - 時間を除いた日付を現在のロケールに基づき表現します。
%X - 日付を除いた時間を現在のロケールに基づき表現します。
%y - 世紀の部分を除いた年を10進数として表現。(00から99までの範囲)
%Y - 世紀を含む年を10進数で表現
%Z - タイムゾーンまたはその名前または短縮形
%% - 文字リテラル`%'
$smarty.now
、
strftime()
、
{html_select_date}
および 日付に関するヒント のページも参照してください。