【发布时间】:2021-11-22 13:49:47
【问题描述】:
我正在做一个项目,我必须将医疗证明的到期日期与当前日期进行比较。 如果到期日期距当前日期超过两个月,我应该在用户页面中设置一个绿色图标;如果距离到期日期不到两个月,我会设置一个黄色图标,否则,如果到期日期已过,我会显示一个红色图标。
为了执行上述操作,我编写了以下代码:
$medical = new DateTime($data->medical_expiration);
$today = new DateTime();
$compare = $today->modify('+2 month');
if($compare < $medical) {
$this->data['check_medical'] = 'success';
} elseif($compare >= $medical && $today <= $medical) {
$this->data['check_medical'] = 'warning';
} else {
$this->data['check_medical'] = 'alarm';
}
我认为 else if 块应该将图标设置为黄色......但它不起作用。当到期日期从今天起不到两个月时,我会看到一个红色图标。 代码有什么问题? 非常感谢任何改进上述代码的反馈或建议(我不喜欢很多 if-else 块)
【问题讨论】:
-
您是否尝试过检查
$today以查看修改后包含的内容? -
设置你比较像这样
$compare = new DateTime(); $compare->modify('+2 month'); -
甚至
$compare = (new DateTime())->modify('+2 month'); -
非常感谢您为我指明了正确的方向......我完全错过了在添加 2 个月后检查 $today 的价值。固定