晚上好!
问题: 问题是在PHP中比较2个日期。 我想只比较日期和月份,不包括年份。 我希望代码首先检查月份,如果月份是相同或小于当前月份。如果确实如此,请继续检查当天。如果日期等于或小于当天,则执行自定义代码。
我尝试过的事情: 这是我到目前为止的地方 -
<?php
$oldDate = "26/02/1815";
$latestDate = explode("/", $oldDate);
$year = $latestDate[2];
$month = $latestDate[1];
$day = $latestDate[0];
$newDate = $month.'/'.$day.'/'.$year;
$nowDate = date('m/d/Y');
$nownowDate = explode("/", $nowDate);
$nowYear = $nownowDate[2];
$nowMonth = $nownowDate[0];
$nowDay = $nownowDate[1];
if ($nowMonth <= $month) {
if ($nowDay <= $day) {
echo<<<NEXTDATE
<li class="next"><?php echo link_to_next_item_show(); ?></li> //This is the custom code
NEXTDATE;
}
}
?>
我觉得我的IF声明有问题。
答案 0 :(得分:2)
自: Elegant way to get the count of months between two dates?
$timezone = new DateTimeZone('America/New_York');
$d1 = new DateTime("1815-02-26", $timezone);
$d2 = new DateTime("2015-01-01", $timezone);
var_dump($d1->diff($d2)->m); // int(4)
var_dump($d1->diff($d2)->d); // int(4)
if(($d1->diff($d2)->m) && ($d1->diff($d2)->d)){
echo "run code here";
}
答案 1 :(得分:0)
您无法将<?php
标记放在heredoc内。因此,您可以这样做,而不是使用heredoc:
echo '<li class="next">' . link_to_next_item_show() . '</li>';
答案 2 :(得分:0)
谢谢大家尽力解决这个问题。也许我没有说清楚,这就是为什么有些人在挣扎,试图理解我在说什么。
我已尝试使用开关解决此问题,因此以下是适用于我的答案。
<?php
$oldDate = metadata('item', array('Dublin Core', 'Date'));
$latestDate = explode("/", $oldDate);
$year = $latestDate[2];
$month = $latestDate[1];
$day = $latestDate[0];
$newDate = $month.'/'.$day.'/'.$year;
$nowDate = date('m/d/Y');
$nownowDate = explode("/", $nowDate);
$nowYear = $nownowDate[2];
$nowMonth = $nownowDate[0];
$nowDay = $nownowDate[1];
switch (true):
case ($month == $nowMonth):
if ($day < $nowDay) {
echo '<li class="next">' . link_to_next_item_show() . '</li>';
} else {
echo " ";
}
break;
case ($month < $nowMonth):
echo '<li class="next">' . link_to_next_item_show() . '</li>';
break;
case ($month > $nowMonth):
echo " ";
break;
default :
echo " ";
break;
endswitch;
?>
感谢@developerwjk纠正在heredoc中使用php标签。现在我知道代码有什么问题了。我提供这个作为答案,以便其他人将从中受益,如果他们试图比较两个日期(仅比较日期和月份,无论其年份)。希望这对将来的其他人有用。