ACF DateTime/Date 选择器:获取大于当前日期的帖子

ACF DateTime/Date Picker : get posts greater than the current date

这里是这样的:

日期字段

$start_date = get_sub_field('start_date');
$date = DateTime::createFromFormat('F j, Y', $start_date);
$sdate = $date->format('F j, Y');

wordpress 中的当前日期

$current_date = date('F j, Y');

我想设定一个条件,即它只显示大于当前日期的字段。

所以当我这样做的时候

 if ($sdate > $current_date) { }

结果与预期不符,因为它还显示了旧月份的值。我做错了什么?有什么帮助吗?

您似乎是在比较字符串,而不是 dateTime 对象。因此 php 将根据字符串开头的字符对它们进行排序。

2019 年 12 月 3 日将被视为小于 2019 年 1 月 5 日,因为 D 在字母表中排在第一位。

你可以通过像这样格式化它们来解决这个问题(如果你想比较字符串而不是 dateTime 对象本身):'Ymd'

您现在正在比较数字,从年份开始,然后是带前导零的月份,然后是带前导零的日。

startTimes = 'Your date';
$args = array(
    'posts_per_page' => -1,
    'post_type'   => 'post_type',//Your post type
    'post_status' => 'publish',        
    'meta_query' => array(
    'relation' => 'AND',                           
        array(
            'key' => 'start_date',
            'value' => $startTimes, //Please confirm date format with your database
            'compare' => '>='
        )
    )
);

$pre_date_posts = get_posts($args);

_e('<pre>');
print_r($pre_date_posts); //Your Result
_e('</pre>');

使用以下代码。它可以帮助你

if (strtotime($sdate) > strtotime($current_date)) { }

<script>
$(function () {
    $('#id_name').datepicker({
        format: 'dd/mm/yyyy',
        autoclose: true,
        startDate: new Date()
    });
});
</script>

请按以下步骤操作:

请安装 ACF 以从后端生成动态字段。

  1. 创建一个字段并将其命名为开始日期,然后将其归档到您的 PHP 文件中,如下所示:

<div class="container">
 <?php
  $sDate = get_field('start_date');
  $currendDate = date('F j, Y');
  if($sDate > $currendDate){
   echo 'Yes, It is greater.';
  }else{
   echo 'No, It is not greater.';
  }
 ?>
</div>
希望能帮到你。

见附件截图: