目标是专门获得一定天数,换句话说, ,开始日期和结束日期,就好像是一个“日历矩阵”一样,包含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();
答案 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);