Smartyで日付から日、月、・・・と日本語の曜日を返したい時があります。
{"2009-07-24"|date_format:"%a"}
と、Smartyのdate_format関数を使えば一応返ってくるのですが、
ロケールに影響を受けたり、文字コードが内部コードと違っていたりで
挙動がどうも不安定なので独自のプラグインを作ってみました。
プラグインソース
/** * 日付から日本語の曜日名を返す * * @params strings(YYYY-MM-DD) $date 日付 * @return strings $_jpnweeks[] 日本語の曜日 * */ function smarty_modifier_get_ja_week($date) { $_jpnweeks = array('日', '月', '火', '水', '金', '土'); preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/", $date, $match); $mktime= mktime(0, 0, 0, $match[2], $match[3], $match[1]); $week = strftime("%w", $mktime); return $_jpnweeks[$week]; }
テンプレート側記述
{"2009-07-24"|get_ja_week}
追記:既に『jp_date_format』というプラグインを作られた方がおられました。
こちらの方がdate_formatのマッパーとして使えるので良いかもしれません。