![]() |
星星上的铅笔 · 找工作、备考、面试刷题网站推荐(牛客网、力扣 ...· 6 月前 · |
![]() |
酒量大的奔马 · 深珠通道最新进展!珠海侧将设四个立交互通均在高新区· 1 年前 · |
![]() |
知识渊博的投影仪 · 广汽埃安,怎么就不是造车新势力了? - 知乎· 1 年前 · |
![]() |
讲道义的小熊猫 · 原创:坦克700最新谍照曝光!外观霸气,3. ...· 1 年前 · |
![]() |
腼腆的香槟 · 她他(彼女と彼)-第七话· 1 年前 · |
我需要得到一个下个月付款日期正确。所以我取了最后一个到期日期,再加上一个月。我该怎么做呢?
我的例子是:最后一次付款是1月31日,我在做
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonthsNoOverflow(1)
它起作用了,它提供了
2018-02-28
,但在那之后,下一次付款将在28号再次到期。所以我需要在添加一个月之后设置一个日期。
Carbon::create(2018, 2, 28, 0, 0, 0)->addMonthsNoOverflow(1)->day(31)
它给出了
2018-03-31
,这很好,但是如果我在第一个示例中使用这个公式
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonthsNoOverflow(1)->day(31)
它给了我溢出的
2018-03-03
。这就是我的问题。我该怎么办?有没有像
->setDayNoOverflow(31)
这样的东西?
您不应使用上次付款日期,而应保留第一个日期,并从第一个日期开始计算所有其他日期,而不是前一个日期:
Carbon::create(2018, 1, 31, 0, 0, 0)
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonthsNoOverflow(1)
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonthsNoOverflow(2)
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonthsNoOverflow(3)
假设你没有这个数据,你仍然可以:
$day = 31;
$date = Carbon::create(2018, 1, 28, 0, 0, 0);
$date->addMonthsNoOverflow(1);
$date->day(min($day, $date->daysInMonth));
您可以使用Carbon Library中提供的addMonth()函数,如下所示
Carbon::create(2018, 1, 31, 0, 0, 0)->addMonth();
您可以将其用作循环
// from month
$min = 3;
// to mont
$max = 9;
// all dates
$paymentDates = [];
$date2 = \Carbon\Carbon::now();
// next day (or today)
$day = $date2->addDay(1)->format('d');
$currentMonth = $date2->format('m');
$year = $date2->format('Y');;
$date = \Carbon\Carbon::now();
$nextMonth = $currentMonth;
for($i = $min; $i <= $max; $i++) {
![]() |
酒量大的奔马 · 深珠通道最新进展!珠海侧将设四个立交互通均在高新区 1 年前 |
![]() |
知识渊博的投影仪 · 广汽埃安,怎么就不是造车新势力了? - 知乎 1 年前 |
![]() |
腼腆的香槟 · 她他(彼女と彼)-第七话 1 年前 |