为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
潇湘沐 2023-10-15 16:42:06
我正在尝试在自定义代码段中显示 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"
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

如果您传递一个日期作为/分隔符,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;


查看完整回答
反对 回复 2023-10-15
?
精慕HU

TA贡献1845条经验 获得超8个赞

event_date_end 以与其他字段不同的顺序保存日期。不知道为什么这很重要,但也许它的保存方式与我正在使用的功能不兼容。

get_field('event_date') 返回“20200825” get_field('event_date_end') 返回“27/08/2020”

我可以在用于创建这些字段的自定义字段插件中更改此设置,现在它可以工作了。


查看完整回答
反对 回复 2023-10-15
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信