按周数设置 ISODate() 给出了一年中第一周的错误月份
setISODate() by week number is giving incorrect month for the first week of the year
当我像这样按一年中的周数设置日期时:
$date = Carbon::now();
$date->setISODate(2020,1);
然后我得到 $date->month
为 12,而期望得到 1。
这是正确的行为吗?为什么在 weekOfYear 1 的情况下,月份是 12?我可以按周数设置日期并获得第 1 个月吗?
您对日历周的概念感到困惑。正式的一年的第一周是包含该年第一个星期四的一周。这意味着 2020 年的第 1 周在 2019-12-30 和 2020-01-05 之间。
如果你想得到第一周的月数,你不能看一周的第一天,但你必须看那个星期的星期四 .
$date = Carbon::now();
$date->setISODate(2020, 1, 4); // 4 is Thursday
echo $date->month; // month will be 1 for every year.
这将为您提供 2020 年第一周的星期四,该星期四已经在 2020-01 年,因此月份为 1。
当我像这样按一年中的周数设置日期时:
$date = Carbon::now();
$date->setISODate(2020,1);
然后我得到 $date->month
为 12,而期望得到 1。
这是正确的行为吗?为什么在 weekOfYear 1 的情况下,月份是 12?我可以按周数设置日期并获得第 1 个月吗?
您对日历周的概念感到困惑。正式的一年的第一周是包含该年第一个星期四的一周。这意味着 2020 年的第 1 周在 2019-12-30 和 2020-01-05 之间。
如果你想得到第一周的月数,你不能看一周的第一天,但你必须看那个星期的星期四 .
$date = Carbon::now();
$date->setISODate(2020, 1, 4); // 4 is Thursday
echo $date->month; // month will be 1 for every year.
这将为您提供 2020 年第一周的星期四,该星期四已经在 2020-01 年,因此月份为 1。