首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP增加两个月,完全跳过11月份。

PHP增加两个月,完全跳过11月份。
EN

Stack Overflow用户
提问于 2016-10-31 09:01:39
回答 2查看 1.6K关注 0票数 2

我需要显示三个日历,一个是当前月份,另两个是未来两个月。

我用碳来做这些计算。

今天是十月三十一日。

如果我写以下内容

代码语言:javascript
运行
复制
$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');

我得到了这个输出

十月 十二月

我完全想念十一月..。那么,我如何在十月份加上一个月,这样我才能得到十一月。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-31 09:56:55

默认情况下,addMonths(1)只将30天增加到一个月。

要添加确切的一个月(例如,从10月到11月,不管是否是29/30/31天),您需要取消addMonth(),而使用addMonthsNoOverflow(n)

例如:

代码语言:javascript
运行
复制
$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');

意外产出:

十月十二月

鉴于

代码语言:javascript
运行
复制
$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

票数 6
EN

Stack Overflow用户

发布于 2018-10-31 15:40:50

这是php基库中的一个错误:\DateTime

在php启动代码集中:

代码语言:javascript
运行
复制
Carbon:: useMonthsOverflow(false);

若要解决此问题,只需使用addMonths()即可。

警告虽然这可能会破坏现有的代码依赖碳,如果你有任何。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40339101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档