PHP Carbon 专门的日期格式

PHP Carbon specialized date format

我想创建一个函数来输出这样的结果:

//Assuming that today is 2022-01-20
parse_date("2022-01-20") //Today
parse_date("2022-01-19") //Yesterday
parse_date("2022-01-18") //Tuesday
parse_date("2022-01-17") //Monday
parse_date("2022-01-16") //Sunday
parse_date("2022-01-15") //2022-01-15

如果日期是今天,则显示 Today;如果日期是昨天,则显示 Yesterday;如果日期在当前周内,则显示工作日名称;对于 Y-m-d还要别的吗。 我目前使用的代码如下:

public function parse_date($date) {
    $carbonDate = Carbon::parse($date);
    if($carbonDate->isToday()) return "Today";
    if($carbonDate->isYesterday()) return "Yesterday";
    $now = Carbon::now();
    $start = $now->startOfWeek(CarbonInterface::SUNDAY)->copy();
    if($carbonDate >= $start && $carbonDate <= $now->endOfWeek(CarbonInterface::SATURDAY)->copy()) {
        return $carbonDate->format('l');
    }
    
    return $carbonDate->format('Y-m-d');
}

我想知道是否有使用其他 Carbon 函数的更好方法。

另一种方法是检查周数,并将其与当前周进行比较。首先仔细检查这些值以确保它有效,或者如果您需要更改语言环境,请使用 Carbon::parse($date)->locale('en_US');

public function parse_date($date) {
    $carbonDate = Carbon::parse($date);
    if($carbonDate->isToday()) return "Today";
    if($carbonDate->isYesterday()) return "Yesterday";
    if($carbonDate->week == Carbon::now()->week) {
        return $carbonDate->format('l');
    }
    
    return $carbonDate->format('Y-m-d');
}