如何获得Carbon的第一天和最后一天,以及只有年份和月份?

时间:2020-03-03 02:40:52

标签: php laravel

我只有2个字符串,年份和月份。我需要使用Carbon来获得第一天和最后一天的服务。例如,提供了“ 2020”和“ 3”。我需要从中获取2个Carbon日期(2020-3-1和2020-3-31)。有可能吗?

4 个答案:

答案 0 :(得分:2)

要实现您的目标,请使用以下代码:

use Carbon\Carbon; // imports the Carbon class
$year = 2020;
$month = 3;
$date_1 = Carbon::create($year, $month)->startOfMonth()->format('Y-m-d'); //returns 2020-03-01
$date_2 = Carbon::create($year, $month)->lastOfMonth()->format('Y-m-d'); //returns 2020-03-31

快乐编码:)

答案 1 :(得分:0)

我使用这种方法来获取每月的第一天和最后一天。

t代表每月的最后一天。

$posts = Post::whereBetween('created_at', [
Carbon::createFromDate(date('Y-m-d 00:00:00', strtotime(request('year') . '-' . request('month') . '-1'))),
Carbon::createFromDate(date('Y-m-d 23:59:59', strtotime(request('year') . '-' . request('month') . '-t')))])
->get();

return $posts

编辑: 我在+上使用php,但是.很抱歉。

或者您可以使用此:

$this->client = $this->client->whereBetween('created_at', [
Carbon::createFromDate(date(request('year') . '-' . request('month') . '-01 00:00:00')),
Carbon::createFromDate(date(request('year') . '-' . request('month') . '-12 23:59:59'))])
->get();

编辑:(编辑:)

根据您的问题,您需要获得第一天和最后一天。 但是在现实世界中,第一天是给定的,因此您只需要获得最后一天即可。 应该是这样的。

应该给出第一天,因为我们都知道它降为1。

$firstDayOfTheMonth = date(request('year') . '-' . request('month') . '-1 00:00:00');

$lastDayOfTheMonth = date(request('year') . '-' . request('month') . '-t 23:59:59');

答案 2 :(得分:0)

您可以像下面的startOfMonthendOfMonth这样的碳法简单地做到这一点

$startOfMonth=\Carbon\Carbon::parse('2020-3')->startOfMonth()->format('Y-n-d');
$endOfMonth=\Carbon\Carbon::parse('2020-3')->endOfMonth()->format('Y-n-d');

答案 3 :(得分:0)

根据Carbon Documentation

Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);

create()的唯一特殊情况是最小值为 默认为缺少参数,但默认为当前值 显式传递null。

因此,如果您仅通过$year$month,它将自动被视为第一天,然后您可以format()使用它来获取第一天作为日期,例如

Carbon::create($year, $month)->format("Y-m-d")