gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:14:30 25 4
gpt4 key购买 nike

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

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

有人对此有一些见解吗?

最佳答案

问题是每个月的天数可能不同。问题是当您想将日期增加 1 个月时您在做什么。根据 PHP 文档,如果您在 1 月 31 日(或 30 日)添加 1 个月,预期行为是什么?

2 月只有 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”之类的东西,并用它来计算你应该查看的月中的哪一天

关于php - 使用 DateInterval 和 DateTime::add 添加月份时会出现什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com