我需要显示三个日历,一个是当前月份,另两个是未来两个月。
我用碳来做这些计算。
今天是十月三十一日。
如果我写以下内容
$carbon = Carbon::now('UTC'); // current datetime in UTC is 8:54 AM October 31, 2016
echo $carbon->format('F') . '<br>';
echo $carbon->addMonths(1)->format('F');
我得到了这个输出
十月 十二月
我完全想念十一月..。那么,我如何在十月份加上一个月,这样我才能得到十一月。
发布于 2016-10-31 09:56:55
默认情况下,addMonths(1)
只将30天增加到一个月。
要添加确切的一个月(例如,从10月到11月,不管是否是29/30/31天),您需要取消addMonth()
,而使用addMonthsNoOverflow(n)
。
例如:
$carbon = Carbon::now('UTC'); // current datetime in UTC is 8:54 AM October 31, 2016
echo $carbon->format('F') . '<br>';
echo $carbon->addMonths(1)->format('F');
意外产出:
十月十二月
鉴于
$carbon = Carbon::now('UTC'); // current datetime in UTC is 8:54 AM October 31, 2016
echo $carbon->format('F') . '<br>';
echo $carbon->addMonthsNoOverflow(1)->format('F');
正确的产出:
十月十一月
这种行为不是由碳引起的,而是由于它所构建的PHP datetime类所致。
addMonthsNoOverflow()
不是默认行为的原因是,这将是一个“突破性的变化”。
你可以在这个Github对话中读到更多关于它的信息:https://github.com/briannesbitt/Carbon/issues/627。
发布于 2018-10-31 15:40:50
这是php基库中的一个错误:\DateTime
在php启动代码集中:
Carbon:: useMonthsOverflow(false);
若要解决此问题,只需使用addMonths()
即可。
警告虽然这可能会破坏现有的代码依赖碳,如果你有任何。
https://stackoverflow.com/questions/40339101
复制相似问题