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"

如果您传递一个以/作为分隔符strtotime()的日期,它将采用美国日期格式。

日期选择器中的日期为逻辑格式。因此,您必须将/更改为-,然后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;

感谢您的快速回复。多亏了你提出的问题,我现在找到了答案。event_date_end以与其他字段不同的顺序保存日期。不知道为什么这很重要,但也许它的保存方式与我使用的功能不兼容。

get_field('event_date'(返回";20200825";get_field('event_date_end'(返回"2020年8月27日";

我可以在我用来创建这些字段的自定义字段插件中更改这一点,现在它可以工作了。

最新更新