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

PHP: How calculate calendar days with all 42 days

目标只是获得一个天数范围,换句话说 , 开始日期和结束日期,就好像它是一个 "calendar matrix",包含 42 天,即当月的天数,以及上个月和下个月的天数。无需呈现(呈现)日历,仅获取日期。

例如,如下图所示。

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

使用 PHP Carbon,我可以使用 startOfMonth()endOfMonth()subMonth()addMonth() 轻松获取当月的天数。

这样做,我得到了这 3 个月的每一天,但目标是能够 "filter" 这些天只呈现等于日历的间隔,但显然是动态的,即,如果我使用 Carbon,会简单地告知所需的日期,并根据每个 "cell".

的位置获得 "filtered" 范围
$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();

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

$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);