Smarty の date_format を使うと、YYYYMMDD HH:MM:SS のような日付はきれいにパースしてくれます。
しかし、YYYYMMDD の文字列を日付のフォーマットには変換してくれません。
今回は、Smarty で YYYYMMDD の文字を日付フォーマット変換する方法を紹介します。
日付に一度変換する
対処法としては、strtotime で文字列を日付に変換しておいて、その後に date_format を使います。
これで、YYYYMMDD な日付文字列を YYYY-MM-DD や YYYY年MM月DD日のようなフォーマットに簡単に変換できます。
以下の説明が該当しそうな気がします。
Smarty-2.6.10 より前は、PHP の strtotime() がパース可能な数値文字列 (YYYYMMDD のような形式) は、タイムスタンプではなく日付文字列として解釈されることもあります(strtotime() の実装に依存します)。
Smartyの記述方法
Smarty の定義は以下のようになります。
1 2 3 4 | $birth = "20100819"; [Smarty] {$birth|escape|strtotime|date_format:"%Y-%m-%d"} |