Jet*_*rst 2 php time datetime php-carbon
我需要显示三个日历,一个用于当前月份,另外两个用于接下来的两个月。
我正在使用 Carbon 进行这些计算。
今天是10月31日。
如果我写以下
$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');
Run Code Online (Sandbox Code Playgroud)
我得到这个输出
十月
十二月
我完全错过了 11 月……所以我如何在 10 月加上一个月才能得到 11 月。
默认情况下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');
Run Code Online (Sandbox Code Playgroud)
意外输出:
十月 十二月
然而
$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');
Run Code Online (Sandbox Code Playgroud)
正确输出:
十月 十一月
这种行为不是由于 Carbon 而是由于它所基于的 PHP datetime 类。
原因addMonthsNoOverflow()不是默认行为,因为这将是一个“破坏性更改”。
你可以在这个 Github 对话中阅读更多关于它的信息:https : //github.com/briannesbitt/Carbon/issues/627
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |