PHP标准时间+1个月增加一个月

2022-08-30 17:35:40

我有一个简单的变量,可以加一个月到今天:

$endOfCycle = date("Y-m", strtotime("+1 month"));

今天是2013年1月,所以我希望回到2013-02,但我得到的是2013-03。我不明白为什么它跳到三月。


答案 1

它跳到3月,因为今天是1月29日,加上一个月就等于2月29日,这不存在,所以它移到了下一个有效日期。

这也将发生在许多月份的31日,但在1月至2月的情况下显然更引人注目,因为2月更短。

如果您对月份中的某一天不感兴趣,而只是希望它给出下个月,则应将输入日期指定为当前月份的第一个日期。如果您添加一个月,这将始终为您提供正确的答案。

出于同样的原因,如果你想总是得到下个月的最后一天,你应该从计算你想要的那一天之后的一个月的第一天开始,然后减去一天。


答案 2

这应该是

$endOfCycle=date('Y-m-d', strtotime("+30 days"));

strtotime

期望给定一个包含美国英语日期格式的字符串,并将尝试将该格式解析为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数),相对于 now 中给出的时间戳,或者如果未提供 now,则为当前时间。

date

返回一个字符串,该字符串使用给定的整数时间戳或当前时间(如果未给出时间戳)根据给定格式字符串设置格式。

请参阅手册页面了解:


推荐