一年的最后一周和1月1日与碳?



我正在做一个项目,我需要按以下格式格式化日期:YYYYWW,其中WW是一年中的周数,例如:今天是202131

有几种方法可以做到这一点,我可以直接使用isoFormat('YYYYWW'),或者我可以获得weekOfYear属性并将其附加到当前年份。

然而,这两种方法都为以下日期中断:01-01-2021,实际上,1月1日被设置在2020年的最后一周,但年份是2021年。两种方法都给出:202153,而正确的结果应该是202053

我目前有一个变通办法,检查月是否小于3,周是否大于50,那么就有问题,我将年减1。

public static function formatTestWeek($d)
{
$current = Carbon::parse($d);
$currentWeek = $current->weekOfYear;
$currentYear = $current->year;
if($currentWeek > 50 && $current->month < 3){
$currentYear -= 1;
}
$formattedDate = strval($currentYear) . $current->isoFormat("WW");
return $formattedDate;
}

在Carbon中是否有更优雅的方法来获得在所有情况下都有效的YYYYWW格式?

YYYY是年份

GGGG是ISO周-年

gggg是当前区域设置(first_day_of_week+day_of_first_week_of_year)之后的周-年

输入->isoFormat('GGGGWW')

isoFormat()中可用代码的完整列表在文档中:https://carbon.nesbot.com/docs/iso-format-available-replacements

最新更新