对照今天的日期检查%2个日期

时间:2013-06-10 作者:Gareth Gillman

我试图根据事件发生的日期显示自定义帖子类型中的数据。日期在cpt的元框中设置。

到目前为止,我的代码是:

$today = date(\'d/m/Y\');
$p_date = get_post_meta($post->ID, \'_cmb_training_date\', true);
$p_date2 = get_post_meta($post->ID, \'_cmb_training_start_date\', true);
if($p_date > $today) {
 // stuff
}
这很好(只显示今天日期之后的事件),但我想添加另一种事件类型($p_date2) 也一样,但如果我这样做了:

if($p_date > $today || $p_date2 > $today) {
 // stuff
}
它显示来自CPT的所有帖子

日期格式都是一样的,所以必须使用if语句

有什么想法吗?

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

对于日期操作,应使用DateTime 班此外,日期应存储在Y-m-d 格式(如果以不同的方式存储,则可以使用指定的格式创建DateTime对象:http://php.net/manual/en/function.date-create-from-format.php (php 5.3以上版本)-但我建议以明确的Y-m-d格式存储)。

以下假设Y-m-d post meta中的格式:

$today = new DateTime( \'now\' );
$p_date = new DateTime( get_post_meta($post->ID, \'_cmb_training_date\', true) );
$p_date2 = new DateTime( get_post_meta($post->ID, \'_cmb_training_start_date\', true) );

if( $p_date > $today || $p_date2 > $today) {
   // stuff
}
正如你在the comments. 您还可以轻松获取年/月/日信息:

if( $p_date2->format(\'m\') == \'01\' ){
      //$p_date2 is in January
}

SO网友:Eric Holmes

就日期比较而言,我认为一个普遍的好做法是将您的时间转换为strtotime. 特别是如果用户输入的日期有变化,最好将它们都放在同一级别。

我有一个帖子here 这有点像。

结束

相关推荐