【发布时间】:2022-02-01 23:46:12
【问题描述】:
我们需要确定“每月的第一周”。据我所知,没有这方面的 ISO 标准,但我遇到了两个定义:
- 每月的第一周是包含该月第一天的那一周。
- 该月的第一周是该月的第一个完整周。
在我们的应用程序中,我们经常使用 ISO 周格式,例如“2022-W09”,这意味着(显然)2022 年的第 9 周。
因此,我们可以很容易地找到“2022-W01”的第一周及其包含的日期:从 2022-01-03 到 2022-01-09(根据 HTML5 输入类型周)。
这告诉我(尽管我喜欢并首先实现了第一个定义)我们应该接受第二个定义,因为 HTML 遵循它。
作为结论,我需要一个算法来找到“本月的第一周”,我接受它是“该月的第一个完整周”(第二个定义)。
在此,我将用于查找“包含每月第一天的星期”的代码放在上面的第一个定义中,即“每月的第一周”。您可以对其进行修改以提出解决方案:
public function isFirstWeekOfMonth()
{
$carbon = Carbon::create()->setISODate(2022, 9);
$startOfWeekCarbon = $carbon->startOfWeek();
$endOfWeekCarbon = $carbon->endOfWeek();
$startOfMonthCarbon = $carbon->endOfWeek()->startOfMonth();
return $startOfMonthCarbon->betweenIncluded($startOfWeekCarbon, $endOfWeekCarbon);
}
【问题讨论】:
标签: html laravel datetime php-carbon iso