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);
目标只是获得一个天数范围,换句话说 , 开始日期和结束日期,就好像它是一个 "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);