ISOdate转phpdate用于ACF自定义字段查询

Convert ISOdate to phpdate for ACF custom field query

我构建了一个自定义海狸生成器 (wordpress) 模块。我正在通过 Ajax 获取帖子。我需要根据 ACF 自定义字段日期查询帖子。

我以 ISO8601 格式发布日期(例如 2013-12-01T00:00:00-05:00)。服务器端,我抓住了开始和结束。我将它们转换成 ACF 查询所需的格式 https://www.advancedcustomfields.com/resources/date-picker/

$start_date = date('Ymd', strtotime($_POST['start']));
$end_date = date('Ymd', strtotime($_POST['end'])); 

我运行查询,但什么也没得到。我将字符串回显出来,它们看起来是正确的。

如果我按照 ACF 文档中的示例设置日期 - 它有效(下面的代码)。所以我一定是错误地转换了 ISOdate $_POST['start']。如何转换 ISODATE 以便我可以在查询中使用它?

function get_ajax_event_calendar_posts() {

    $today = date('Ymd'); // this works...

    $args = array(
        'post_type' => array('event'),
        'meta_query' => array(
            array(
                'key'           => 'start_date',
                'compare'       => '<=',
                'value'         => $today,
            ),
            array(
                'key'           => 'end_date',
                'compare'       => '>=',
                'value'         => $today,
            )
        ),
        'post_status' => array('publish'),
        'posts_per_page' => 100,
        'nopaging' => true,
        'order' => 'DESC',
        'orderby' => 'date'
    );
    // The Query
    $ajaxposts = get_posts( $args ); 
    //... etc
}

** 编辑 ** ....日期的东西不是问题。我是问题所在...以正确的方式切换我的比较并且一切正常...

您没有说您实际需要什么格式来存储数据,但是您确实说 date('Ymd') 有效。无论哪种方式,使用 DateTime class:

<?php

$x = new DateTime('2013-12-01T00:00:00-05:00');
echo $x->format('d/m/Y H:i:s') . "\n";     // 01/12/2013 00:00:00
echo $x->format('dmY') . "\n";     // 01122013

这是日期格式https://www.php.net/manual/en/function.date.php