проверка даты всегда возвращает false

у меня есть пользовательское поле expirydate, которое сделано из acf как средство выбора даты … с кодом ниже, я пытаюсь удалить сообщение, которое истекло … по какой-то причине код не работает.

$arg= get_posts(array('post_type' => tokens, 'numberposts' => -1));
foreach ( $arg as $post ) :  setup_postdata($post);
if (!empty($post))
{
$expiry=get_field('expiry',$post->ID);
$today=date("d/m/Y");
if ($today>$expiry) {
echo $expiry."expired <br>";
wp_delete_post($postid);
}
else {
echo "not expired"."<br>";
}
}
endforeach;
echo "process completed";
?>

состояние $today>$expiry всегда возвращает ложь

0

Решение

Ты сравниваешь строки, не даты. Так 31/1/2014 больше, чем 01/12/2014 потому что 3> 1, когда сравнивая строки.

Чтобы правильно сравнивать даты, либо используйте формат строки, который правильно сопоставим, либо используйте DateTime() объекты, которые сопоставимы.

$expiry = DateTime::createFromFormat('d/m/y', get_field('expiry',$post->ID));
$today  = new DateTime();
if ($today > $expiry) {

Я советую не использовать strtotime() для сравнения дат, как это делает не принять во внимание летнее время.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]