使用PHP If语句比较插件中的日期

时间:2017-07-07 作者:Hunter

这真的很简单,但我似乎无法让它工作。如果当前日期已过期,我希望到期日期文本为红色。如果还没有到期,我希望它是绿色的。此外,我将截止日期设置为wordpress帖子发布后的2天后。虽然我需要一些帮助,但对我来说一切都很好,但无论是否过期,一切都是绿色的。

<?php 
    $current_date = strtotime(date( \'F j, Y g:i A\' ));
    $expire_date = get_the_date( \'F j, Y g:i A\' );
    $expire_date = new DateTime($expire_date);
    $expire_date->add(new DateInterval(\'P2D\'));

    $compare_date = $expire_date->format(\'F j, Y g:i A\');
?>
<?php if( get_field( \'maxpreps_link\' ) or get_field( \'khsaa_link\' ) ) { echo "<span style=\'color: green;\'>Done!</span>"; } ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" target="_blank" style="color: #0000EE;"><?php the_title(); ?></a>
&nbsp;&nbsp;<span>(<?php echo the_date(); ?>)</span>
<?php
echo ("&nbsp;&nbsp;" . "<span style=\'float: right; color: "); 
if( $compare_date > $current_date ) { 
    echo "#BA0000"; } 
else { echo "#39AC00"; } 
echo (";\'>Due Date: " . $compare_date . "</span></strong>");

1 个回复
SO网友:dbeja

$current\\u date是一个时间戳,$compare\\u date是一个格式化的日期,因此您正在比较不同的内容。

因为您已经在使用DateTime 从PHP 5.2.2开始,可以使用比较运算符比较DateTime对象,您可以将$expired\\u date(DateTime对象)与今天的日期作为DateTime对象进行比较:

$current_date = new DateTime();
$expired = new DateTime();
$expired->setTimestamp( get_the_time(\'U\') );  // get UNIX timestamp of current post
$expired->add(new DateInterval(\'P2D\'));  // add 2 days

$day_color = \'\';
if( $current_date > $expired ) {
    $day_color = \'#BA0000\';
} else {
    $day_color = \'#39AC00\';
}

echo sprintf( \'<span style="float: right; color: %s;">Due Date: %s</span>\', $day_color, $expired->format(\'F j, Y g:i A\') );

结束

相关推荐

无法在我的插件中使用PHP Header()

我有一个客户端网站,它有一个自定义开发的插件,当数据更新时(都在Wordpress admin后端),它会使用PHP头(\'Location:\')函数切换到不同的URL。我最初是在一个旧主题的环境中开发的,最终我放弃了旧主题,换成了一个新的更好的主题,但现在PHP抛出了一个错误,说:PHP Warning: Cannot modify header information - headers already sent by (output started at /wp-admin/includes/te