繁体   English   中英

设置没有溢出的日期(使用 PHP Carbon)

[英]Set day with no overflow (with PHP Carbon)

我使用 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()这确实很有帮助,但没有像这样设置一天的东西。

从 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),
   }

或者,您可以使用addUnitNoOverflowsubUnitNoOverflow

问题 github - 来源

你可以用endOfMonth()代替吗?

Carbon::create(2018, 2, 27, 0, 0, 0)->endOfMonth();

Carbon 文档中有完整的修饰符列表。

答案是

$day = 31;
$date = Carbon::create(2018, 2, 27, 0, 0, 0);
$date->day(min($day, $date->daysInMonth));

很简单:

$date = Carbon\Carbon::now();
$date->day = 10;
$date->month = 1;
$date->year = 2021;

文档: https : //carbon.nesbot.com/docs/#api-setters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM