如何从ACF日期选择器月份中获取前3个字符?

时间:2018-11-01 10:58:48

标签: php advanced-custom-fields laravel-blade

我正在尝试格式化从ACF日期选择器字段返回的日期。当前它将日期返回为('F d,y'),并显示为2018年10月16日。但是,我希望将其显示为2018年10月16日。

基本上删除月份字符串以仅显示前3个字符。有什么想法吗?

查看:

@if(!empty($posts))
    @include('layouts.posts', $posts)
@else
  <p>No Events to show</p>
@endif

layouts.posts

<div class="post-items">
    @if ( count($posts) > 0)
      @foreach ($posts as $key => $post)
        <div class="post-item" >
            @if ($post['date'] != '')
                <div class="post-item__date">
                    {!! $post['date'] !!}
                </div>
            @endif
            {!! $post['content']!!}
      </div><!-- .post-item -->
      @endforeach
    @endif
</div>

控制器:

public function posts() {
$posts = [];

foreach ($this->wp_query->posts as $key => $post) {

    $posts[$key]['date'] = get_field('acf__event_date', $post->ID);
    $posts[$key]['content'] =
                '
            <h2>'.$post->post_title.'</h2>
            <p>'.wp_trim_words(get_post_field('post_content', $post->ID), 30).'</p>
            <p><a href="'.get_permalink($post->ID).'" class="button">Read more</a></p>';
}

return $posts;
}

2 个答案:

答案 0 :(得分:1)

嘿,在获得该字段之后

$date = get_field('date', false, false);

您可以从该日期开始创建一个新的 php DateTime 对象

$date = new DateTime($date);

然后使用本地php格式功能

$date->format('M j, Y');

M 选项会自动为您提供月份的首字母缩写

答案 1 :(得分:1)

我通过让ACF给我自定义格式返回('M j,Y')来解决了这个问题。