PHP/Laravel 5.4/Carbon - 解析一年中一周的可持续方式,考虑到年与年之间的周数差异

PHP/Laravel 5.4/Carbon - sustainable way to parse week of year, considering for year to year week number variances

关于如何解析一年中的一周并考虑异常情况的任何想法,例如今年的 12/31/18 实际上是 2019 年的第 1 周。原因是有人编写了一个存储日期的调度程序,如下所示:2017-W37-1(年份、字母 W、实际周数和一周中的实际天数)。按照它的写法,它已经存储了三百多行 2018-W53,今年甚至都不存在。我正在使用 PHP/Laravel 5.4,我已经启动了一个 weekOfYear 方法来过滤来自前端的所有传入日期。 Flow 是前端有一个日期选择器,将日期发送到索引、存储和销毁方法,并从那里与时间表 table 交互,其中有一个 "date" 列,格式如上(实际上是一个字符串obvs 而不是日期)。没有回退日期,所以它只是根据那个字符串拉出一周的所有时间表。目前为止我的方法:

public function weekOfYear($date)
{
    $date = Carbon::parse($date);
    $formattedDate = $date->year.'-W'.$date->weekOfYear;

    if ($date->format('Y-m-d') === '2018-12-31') {
        $formattedDate = '2019-W01';
    }
    return $formattedDate;
}

天数在其他方法中被标记,但我可能也会在此处添加它。这适用于 2018 年,但我宁愿以更灵活的方式解析日期,尽管 2019 年实际上更直接。

只需使用$formattedDate = $date->format('o').'-W'.$date->format('W');