2016-10-19 5 views
1

タイムスタンプをSmartyテンプレートに渡していて、date_formatを使用すると予測できない結果が生じます。Smartyテンプレートdate_formatが予期せぬ結果をもたらします

{"1456602208"} 
{"1456602208"|date_format} 
{"1432808316"} 
{"1432808316"|date_format} 

このテンプレートの出力:

1456602208 
Oct 19, 2208 
1432808316 
May 28, 2015 

二日付が正しくフォーマットされてここで最もエレガントな問題を示す例のテンプレートです。しかし、最初のものは

Feb 27, 2016 

である必要があります。

+1

intから試してみても問題ありませんか?このようにするには: '{1456602208 | date_format}'あなたが持っているスマイリーのバージョンは?バージョンSmarty-2.6.10からの数値入力にはいくつか変更があることがわかります。だから古いバージョンを持っていれば多分ここに問題があります。 –

答えて

1

これを避ける最も良い方法は、intにタイムスタンプをキャストすることです。今は数字のstringです。

Smartyは、すべての数値入力値をタイムスタンプとして使用するように2.6.10でいくつかの変更を行いましたが、以前は必ずしもそうではありませんでした。

最初のタイムスタンプは2208で終わり、そのタイムスタンプで返された年も2208であるため、タイムスタンプではないと思いますが、日付は何とかフォーマットされていると思います。

もっと見るhere (smarty doc)

+0

あなたはすべてのアカウントを正しく理解しているようです。これは古いSmartyバージョンであり、フォーマットを正しく推測していません。そこで、Smartyをアップグレードし、UNIXのタイムスタンプの代わりにISO8601の日付スタンプに切り替える予定です。乾杯。 – tenfour

関連する問題