Ron*_*son 4 php datetime dateinterval
我没能找到解决这个问题的正确方法.正如您在PHP文档中的示例#3中看到的那样,他们声明在使用DateTime :: add中的DateInterval 添加月份时必须要注意.
对于为什么方法的行为是这样的,并且我可以做些什么来避免这种情况并没有任何解释,我发现这是一个错误.
有人对此有所了解吗?
问题是每个月可能有不同的天数.问题是当你想把日期增加1个月时你正在做什么.根据PHP文档,如果您在1月31日(或30日)并且您添加1个月,那么预期的行为是什么?
二月只有29天.你想成为这个月的最后一天吗?如果这是您正在寻找的,或者基于当前日期的静态日期,您通常会在一定天数内更安全地递增.如果你在增加月份时不知道自己要完成什么,就很难说出如何观察错误.
编辑:
正如有人在上面提到的Mike B评论的类似帖子中提到的那样,你可能想要做一些事情(在伪代码中):
1) Use cal_days_in_month() for the next month and save that number to a variable x
2) If x >= current billing DOB, increment and be done
3) DateTime::modify('last day') (havent used this before but something along these lines) to set the date to the last date of the next month (set it to the 1st of the next month, then last day?)
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果您在此处使用变量作为新的结算值,您将清除原始值.我会保存一个额外的DB值,即"第一个开票日期"或者只是"billing_day_of_month"或者其他东西,然后使用它来计算出你应该关注的那个月的日期