date_i18n 函数显示今天的日期而不是提供的日期

我正在尝试在自定义代码段中显示 WordPress 中从开始日期到结束日期的日期范围,以列出我们网站上的事件。有两个与此问题相关的自定义字段:


event_date:显示事件的开始日期(使用日期选择器)

event_date_end:显示事件的结束日期(使用日期选择器,仅当事件超过一天时使用)

我正在使用下面的代码,它对我来说看起来很正确,但由于某种原因,第二个日期设置为今天的日期,而不是 event_date_end 字段中的日期。如果我仅显示 event_date_end (例如 echo get_field('event_date_end') ),则会显示正确的日期,但当尝试更改其显示方式时,由于某种原因,日期会发生变化。知道什么可能导致这种情况吗?整个事情是一个较长片段的一部分,所以也许错误超出了这个范围,但我有一种感觉,我没有正确使用 i18n。


$eventduration = date_i18n("d", strtotime(get_field('event_date')))."

".date_i18n("M", strtotime(get_field('event_date')))." -

".date_i18n("d", strtotime(get_field('event_date_end')))."

".date_i18n("M", strtotime(get_field('event_date_end')))."; 

echo $eventduration;


#Should display something like "25 Aug - 28 Aug" but instead shows "25 Aug - 18 Aug"


潇湘沐
浏览 120回答 2
2回答

PIPIONE

如果您传递一个日期作为/分隔符,strtotime()它将采用美国日期格式。日期选择器中的日期采用逻辑格式。因此,您必须将 更改/为 a -,然后strtotime()才能正常使用此格式$ede = str_replace('/', '-', get_field('event_date_end'));$eventduration = date_i18n("d M", strtotime(get_field('event_date')))                 ." - ".                 date_i18n("d M", strtotime($ede)); echo $eventduration;

精慕HU

event_date_end 以与其他字段不同的顺序保存日期。不知道为什么这很重要,但也许它的保存方式与我正在使用的功能不兼容。get_field('event_date') 返回“20200825” get_field('event_date_end') 返回“27/08/2020”我可以在用于创建这些字段的自定义字段插件中更改此设置,现在它可以工作了。
打开App,查看更多内容
随时随地看视频慕课网APP