我使用Carbon(PHP库)将日期设置为日期。但我希望它不会到下个月,而要停下来,直到月底。 示例:
Carbon::create(2018, 2, 27, 0, 0, 0)->day(31);
我要
2018-03-03 00:00:00
但是我需要
2018-02-28 00:00:00
当您运营数月时,Carbon会给您->subMonthsNoOverflow()
和->addMonthsNoOverflow()
,这确实很有帮助,但是设置一天没有这样的事情。
答案 0 :(得分:1)
您可以改用endOfMonth()
吗?
Carbon::create(2018, 2, 27, 0, 0, 0)->endOfMonth();
Carbon documentation中有修饰符的完整列表。
答案 1 :(得分:1)
自Carbon 2.0起,他们添加了方法setUnitNoOverflow($unit, $value, $overflowUnit)
,但仍未公开。
我设法通过这种方式获得了2019-02-28
Carbon::parse('2019-02-01')->setUnitNoOverflow('day', 31, 'month')->format('Y-m-d')
Carbon\Carbon @1551398399 {#3013
date: 2019-02-28 23:59:59.999999 UTC (+00:00),
}
或者,您可以使用addUnitNoOverflow
和subUnitNoOverflow
答案 2 :(得分:0)
答案是
$day = 31;
$date = Carbon::create(2018, 2, 27, 0, 0, 0);
$date->day(min($day, $date->daysInMonth));
答案 3 :(得分:-1)
很简单:
$date = Carbon\Carbon::now();
$date->day = 10;
$date->month = 1;
$date->year = 2021;