鉴于$interval是条件陈述后的DateInterval对象,无论周年纪念日是在当前日期之前的1年内= 0还是周年纪念日在当前日期之后的1年内= - 0。
$interval = $anniversary->diff($current_Date);
if ($interval->format('%r%y') < 0){
do something
}
所以我希望能够说出一个像这个号码签名为否定的东西,但据我所知,没有这样的东西存在。有什么想法吗?
**编辑**
解决方案是比较日期对象并确定它们是否在适当的DateInterval中:
if ($anniversary < $current_Date && $interval->format('%r%y') == 0){
答案 0 :(得分:1)
由于DateTime::diff()
的返回值是DateInterval对象,解决方案是使用DateInterval::invert
属性: -
$interval = $anniversary->diff($current_Date);
if ($interval->invert){
//do something
}
引用manual: -
反转
如果间隔表示负时间段,则为1,否则为0。请参阅DateInterval::format()。
答案 1 :(得分:0)
您应该改为%r%d
。你真正需要知道的只是积极或消极,对吗?然后只需获取天数差异,看看数字是否小于0或大于0.之后,您可以days%365
获取年份差异,或者您可以执行另一个%y