Date Interval可以返回负零或正零,如何在结果上设置条件语句

时间:2012-12-10 08:47:52

标签: php datetime dateinterval

鉴于$interval是条件陈述后的DateInterval对象,无论周年纪念日是在当前日期之前的1年内= 0还是周年纪念日在当前日期之后的1年内= - 0。

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

所以我希望能够说出一个像这个号码签名为否定的东西,但据我所知,没有这样的东西存在。有什么想法吗?

**编辑**

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

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

2 个答案:

答案 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