Шаблон Smarty date_format дает непредсказуемые результаты

#php #smarty

#php #smarty

Вопрос:

Я передаю временную метку в шаблон 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 у вас есть? Я вижу, что есть некоторые изменения в числовом вводе с версии Smarty-2.6.10. Так что, если у вас более старая версия, возможно, проблема в этом.

Ответ №1:

Лучший способ избежать этого — привести к int метке времени. Теперь это числовое значение string .

Smarty внес некоторые изменения в 2.6.10, чтобы использовать все числовые входные значения в качестве метки времени, но раньше это было не всегда так.

Как я вижу, первая временная метка заканчивается на 2208 , а также год, возвращаемый для этой временной метки 2208 , поэтому я думаю, что smarty считает, что это не временная метка, а дата, отформатированная каким-то образом.

Смотрите больше здесь (smarty doc)

Комментарии:

1. Да, похоже, вы правы во всех учетных записях. Это более старая версия Smarty и неправильно определяет формат. Поэтому мы обновим Smarty, а также перейдем на метки даты ISO8601 вместо меток времени unix. Приветствия.