在smarty中,我有一个格式如下的日期字符串:DD / MM / YYYY
当我尝试使用date_format
时,日期错误。
如何让它理解初始字符串的格式是什么?
答案 0 :(得分:1)
date_format
Smarty变量修饰符的文档解释了它对格式化值的期望:
这会将日期和时间格式化为给定的
strftime()
格式。日期可以作为unix timestamps,DateTime objects,mysql时间戳或由月份日组成的任何字符串传递给Smarty,可由phpstrtotime()
解析。
您使用的strtotime()
)的日期格式为MM/DD/YYYY
not recognized,并且有充分的理由:对于一年中超过三分之一的日期,这个格式不能与MM/DD/YYYY
区分开来。 PHP开发人员必须选择识别这两种格式中的哪一种,并选择/
(可能因为它具有更高的覆盖率)。
问题的可能解决方案是首先使用replace
修饰符,将-
更改为.
或DD-MM-YYYY
。 DD.MM.YYYY
和strtotime()
格式均有效且由{$date|date_format:'%e %B %Y'}
识别,并且不会与其他格式冲突。
如果您当前的代码如下:
{$date|replace:'/':'.'|date_format:'%e %B %Y'}
将其更改为:
{{1}}