首页 > 解决方案 > PHP/Laravel 5.4/Carbon - 解析一年中一周的可持续方式,考虑到每年的周数差异

问题描述

关于如何解析一年中的一周并考虑异常情况的任何想法,例如今年的 12/31/18 实际上是 2019 年的第 1 周。原因是有人编写了一个调度程序来存储如下日期:(2017-W37-1年份,字母 W,实际周周数和实际天数)。按照它的编写方式,它已经存储了三百多行2018-W53,今年甚至不存在。我正在使用 PHP/Laravel 5.4 并且我已经开始了weekOfYear从前端过滤所有传入日期的方法。流程是前端有一个日期选择器,将日期发送到索引,存储和销毁方法并从那里与时间表表进行交互,该表有一个上述格式的“日期”列(实际上是字符串 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 年实际上更简单。

标签: phplaraveldatelaravel-5laravel-5.4

解决方案


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


推荐阅读