2

假设$intervalDateInterval对象,则无论周年纪念日是在当前日期 = 0 之前的 1 年内还是周年纪念日是在当前日期 = -0 之后的 1 年内,条件语句都为真。

$interval = $anniversary->diff($current_Date);
if ($interval->format('%r%y') < 0){
    do something
}
  • 我不能使用 abs 因为它们都是 0
  • 我不能使用 <= 0 因为它们都是
  • 我不能使用 >= 0 因为这在我不想要的其他情况下设置为 true
  • 我不能使用 < 0 因为 0 不是,我希望 0 为真
  • 我不能使用 == 0 因为两者都是真的
  • 我不能使用 > 0 因为 0 不是,我希望 0 为真

所以我想能够说这个数字是否为负数,但据我所知不存在这样的事情。有什么想法吗?

** 编辑 **

解决方案是比较日期对象并确定它们是否在适当的 DateInterval 中:

if ($anniversary < $current_Date && $interval->format('%r%y') == 0){
4

2 回答 2

2

由于的返回值DateTime::diff()是一个DateInterval对象,解决方案是使用DateInterval::invert属性:-

$interval = $anniversary->diff($current_Date);
if ($interval->invert){
    //do something
}

引用手册:-

倒置

如果间隔表示负时间段,则为 1,否则为 0。请参阅DateInterval::format()

于 2012-12-12T16:41:13.650 回答
0

你应该这样做%r%d。你真正需要知道的是它是积极的还是消极的,对吧?然后就是获取天差的数量,看这个数字是小于0还是大于0。之后可以做adays%365得到年差,也可以再做一个%y

于 2012-12-10T08:55:32.387 回答