PHP:如何计算所有42天的日历天

时间:2019-09-28 11:49:56

标签: php date php-carbon

目标是专门获得一定天数,换句话说, ,开始日期和结束日期,就好像是一个“日历矩阵”一样,包含42天(即当月的天)以及上个月和下个月的天。无需出示(渲染)日历,只需获取日期即可。

例如,请遵循下图。

我需要输入给定年份的某个月份,并且需要获得该天范围,如图所示。

使用PHP Carbon,我可以轻松地使用startOfMonth()endOfMonth()subMonth()addMonth()来获取当月的日期。

这样做,我得到了这3个月的每一天,但目标是能够“过滤”这几天,以仅显示等于日历的间隔,但显然是动态的,即如果我使用Carbon,只需告知所需日期,并获得“已过滤”范围,同时尊重每个“单元格”的位置。

$prev_start = Carbon::now()->subMonth()->startOfMonth();
$prev_end = Carbon::now()->subMonth()->endOfMonth();

$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth();

$next_start = Carbon::now()->addMonth()->startOfMonth();
$next_end = Carbon::now()->addMonth()->endOfMonth();

calendar

1 个答案:

答案 0 :(得分:1)

因此,您可以执行以下操作:

$monthStart = Carbon::now()->startOfMonth();
$monthEnd = Carbon::now()->endOfMonth();

$calendarStart = $monthStart->startOfWeek(Carbon::SUNDAY); 
$calendarEnd = $monthEnd->endOfWeek(Carbon::SATURDAY);

$calendarStart$calendarEnd现在应该包含将在单个屏幕中显示的第一天和最后一天。假设日历将扩展显示的第一周和最后一周。

如果您使用的日历始终显示42天,则无论如何都可以:

$monthStart = Carbon::now()->startOfMonth();

$calendarStart = $monthStart->startOfWeek(Carbon::SUNDAY); 
$calendarEnd = $calendarStart->addDay(42);