ACF pro - return 日期选择器

ACF pro - return day with date picker

我将 ACF pro 用于我的 wordpress。 我的日期选择器字段是一个转发器字段。

我只需要return那一天。

我的代码:

<?php   
if( have_rows('dates') ):
while ( have_rows('dates') ) : the_row();
echo get_sub_field('date')."</br>";
endwhile;
else :
echo __( 'No dates available.','mywebsite' );
endif;
?>

get_sub_field() 函数通常会 return 一个字符串,具体取决于字段类型。此实例将 return 时间戳作为字符串,例如 '2021-06-28 10:28:00'

如果你只想 return 那一天你可以使用 PHP 的 strtotime 函数然后 return 你一个日期时间纪元整数 - 然后可以将其与 php 的 date 函数结合使用以打印日期。以下是可用于 date 函数的格式列表:PHP DateTime::format

示例:

<?php   
if (have_rows('dates')):
  while (have_rows('dates')) : the_row();
    $dateTime = strtotime(get_sub_field('date'));
    echo("Day : " . date('l', $dateTime) . "</br>");
  endwhile;
else :
  echo __('No dates available.', 'mywebsite');
endif;
?>

作为您的设置而不是您的代码中的另一种解决方案 - 更改实际字段的 'Return Format'。

参见:ACF Date Time Picker Docs

示例为:

  • 'd' - 一个月中的第几天,带前导零的 2 位数字
  • 'j' - 不带前导零的月份中的第几天
  • 'D' - 一天的文本表示,三个字母
  • 'l' - 星期几的完整文本表示

那么您的原始代码将输出正确的格式:

<?php   
if( have_rows('dates') ):
  while ( have_rows('dates') ) : 
    the_row();
    echo('Day: ' .  get_sub_field('date') . "</br>"); //This will now output your 'Return Format' in ACF setup
  endwhile;
else :
  echo __( 'No dates available.','mywebsite' );
endif;
?>

您可以设置日期字段的 return 值。

EDIT

好的,所以如果你想显示两个日期,一个是完整的,一个只是一天,你首先需要 return 值是完整的日期,在这个例子中让天为 d/m/Y

$full_date = get_sub_field('date'); // the full date (format d/m/Y);
$day_from_date = DateTime::createFromFormat('d/m/Y', $full_date)->format('d'); // will get the day from the $full_date

这将为您提供所需的结果。

有关该方法的更多信息,请参见DateTime::createFromFormat