解释与 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-YYYYDD.MM.YYYY 格式均有效并被 strtotime() 识别,并且它们不会与其他格式冲突。

如果您当前的代码如下所示:

{$date|date_format:'%e %B %Y'}

改为:

{$date|replace:'/':'.'|date_format:'%e %B %Y'}