考虑这两个日期2017/4 / 14,2017 / 6/3
在php中使用date_diff给我这个
object(DateInterval)[6]
public 'y' => int 0
public 'm' => int 1
public 'd' => int 20
public 'h' => int 0
public 'i' => int 0
public 's' => int 0
public 'weekday' => int 0
public 'weekday_behavior' => int 0
public 'first_last_day_of' => int 0
public 'invert' => int 0
public 'days' => int 50
public 'special_type' => int 0
public 'special_amount' => int 0
public 'have_weekday_relative' => int 0
public 'have_special_relative' => int 0
我的任务是创建此函数的复制(作为赋值)。但是当我通过算法运行这些日期时,我得到了
object(stdClass)[4]
public 'years' => int 0
public 'months' => int 1
public 'days' => int 19
public 'total_days' => int 50
public 'invert' => int 0
当我手动(手动)计算天数时,我仍然认为这是额外的19天。我不是在寻找分配解决方案。但也许某些算法或者date_diff函数有一些我不知道的错误?
对于200多个测试用例,我的算法可以正常工作,对于其他7个测试用例,它没有,并且它在我的解决方案和php解决方案之间始终存在差异。
答案 0 :(得分:1)
请记住,一个月不是一个固定的天数,所以它将依赖于你吞噬那个" 1个月。"
如果您从2017/4/14开始并且需要整整几个月才能获得:
如果你从2017/6/3开始并向后工作,你会得到:
所以它依赖于你正在使用的方法。
简而言之date_diff
在这里没有被打破,可以说你的算法也不是 - 日期只是一些时髦的事情。