谁能给我解释一下为什么(new Carbon('last day of October'))->modify('+1 month');
返回
Carbon {#326
+"date": "2016-12-01 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/"
}
与modify('-1 month')
相同。当修改一个月时,碳会在目标月份中减少或增加一些天吗?因此,当我们在10月的最后一天加上"1个月"时,Carbon会在10月31日加上31天,并返回12月1日……
似乎碳库仍然有一些bug。你可以试试这个方法。
Carbon::create()->endOfMonth()->month(10)->modify('+1 month')
您可以在http://phpio.net/tools/carbon查看结果
last day of October
为当年Oct 31st
。
Oct 31st +1 month
是 11月 31。那是一个无效的日期。但显然,它应该与Nov 30th +1 day
相同,即Dec 1st
。
问题是两个评估都是独立完成的。modify("+1 month")
不知道它应该导致"最后一天";
你不能通过使用endOfMonth()
来解决这个问题,除非它实际上是链中的最后一个日期更改。它与modify("last day of this month")
基本相同,但将时间提前到午夜前1µs。
相反,您可以将字符串连接到单个表达式中,例如:last day of October +1 month
.