日期检查始终返回false

时间:2015-02-08 01:34:18

标签: php date date-comparison

我有一个自定义字段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始终返回false

1 个答案:

答案 0 :(得分:2)

您正在比较字符串,而不是日期。因此31/1/2014大于01/12/2014,因为3&gt; 1 比较字符串时

要正确比较日期,请使用可比较的字符串格式或使用可比较的DateTime()个对象。

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

我建议不要使用strtotime()进行日期比较,因为会考虑夏令时。