微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用DateInterval和DateTime :: add添加月份时会出现什么问题?

我没能找到解决这个问题的正确方法.正如您在 PHP文档中的示例#3中看到的那样,他们使用DateTime :: add中的DateInterval声明了 one must beware when adding months.

对于为什么方法的行为是这样的以及我可以做些什么来避免这种情况,我没有任何解释,我发现这是一个错误.

有人对此有所了解吗?

问题是每个月可能有不同的天数.问题是,当您想将日期增加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?)

值得注意的是,如果您在此处使用变量作为新的结算值,您将清除原始值.我会保存一个额外的DB值,即“第一个开票日期”或者只是“billing_day_of_month”或者其他东西,然后使用它来计算出你应该关注的那个月的日期

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐