解释与 date_format 一起使用的英文日期字符串
Interperet english date string to use with date_format
在 smarty 中,我有一个格式如下的日期字符串:DD/MM/YYYY
当我尝试使用 date_format
时,日期错误。
如何让它理解初始字符串的格式?
date_format
Smarty 变量修饰符的文档解释了它期望值被格式化的内容:
This formats a date and time into the given strftime()
format. Dates can be passed to Smarty as unix timestamps, DateTime objects, mysql timestamps or any string made up of month day year, parsable by php's strtotime()
.
您使用的日期格式 (DD/MM/YYYY
) 是 not recognized by strtotime()
并且有一个很好的理由:一年中超过三分之一的日子,除了 MM/DD/YYYY
之外无法分辨此格式。 PHP 开发人员必须选择识别这两种格式中的哪一种,他们选择了 MM/DD/YYYY
(可能是因为它具有更高的覆盖率)。
您的问题的一个可能解决方案是首先使用 replace
修饰符,将 /
更改为 -
或 .
。 DD-MM-YYYY
和 DD.MM.YYYY
格式均有效并被 strtotime()
识别,并且它们不会与其他格式冲突。
如果您当前的代码如下所示:
{$date|date_format:'%e %B %Y'}
改为:
{$date|replace:'/':'.'|date_format:'%e %B %Y'}
在 smarty 中,我有一个格式如下的日期字符串:DD/MM/YYYY
当我尝试使用 date_format
时,日期错误。
如何让它理解初始字符串的格式?
date_format
Smarty 变量修饰符的文档解释了它期望值被格式化的内容:
This formats a date and time into the given
strftime()
format. Dates can be passed to Smarty as unix timestamps, DateTime objects, mysql timestamps or any string made up of month day year, parsable by php'sstrtotime()
.
您使用的日期格式 (DD/MM/YYYY
) 是 not recognized by strtotime()
并且有一个很好的理由:一年中超过三分之一的日子,除了 MM/DD/YYYY
之外无法分辨此格式。 PHP 开发人员必须选择识别这两种格式中的哪一种,他们选择了 MM/DD/YYYY
(可能是因为它具有更高的覆盖率)。
您的问题的一个可能解决方案是首先使用 replace
修饰符,将 /
更改为 -
或 .
。 DD-MM-YYYY
和 DD.MM.YYYY
格式均有效并被 strtotime()
识别,并且它们不会与其他格式冲突。
如果您当前的代码如下所示:
{$date|date_format:'%e %B %Y'}
改为:
{$date|replace:'/':'.'|date_format:'%e %B %Y'}