0

我在 dayjs 中有以下日期处理,我试图在 PHP 中复制但失败了。我预计两者都将在 2020 年 7 月 27 日星期一返回。有人可以帮忙吗?

JS - 2020 年 7 月 27 日星期一返回

var firstOfMonth = dayjs('2020-08-01'),
    weekOneStart = firstOfMonth.clone().day(1); // Monday

console.log(weekOneStart);

PHP - 2020 年 8 月 3 日星期一返回

$d = Carbon::createFromFormat('Y-m-d', '2020-08-01');
echo $d->firstOfMonth(1);
4

1 回答 1

1

这两个函数是不同的,因为 JS 函数获取一周的第一个星期一,而 Carbon 函数获取一个月的第一个星期一。您可以在 firstOfMonth 的 Carbon 代码中看到这一点:

public function firstOfMonth($dayOfWeek = null)
{
    $this->startOfDay();

    if ($dayOfWeek === null) {
        return $this->day(1);
    }

    return $this->modify('first '.static::$days[$dayOfWeek].' of '.$this->format('F').' '.$this->year);
}

如果你想得到一周的第一天,那么你需要使用$d->startOfWeek();

$d = Carbon::createFromFormat('Y-m-d', '2020-08-01');
$d->startOfWeek();
// object(Carbon\Carbon)(
//   'date' => '2020-07-27 00:00:00.000000',
//   'timezone_type' => 3,
//   'timezone' => 'America/New_York'
// )
于 2020-12-01T17:48:52.497 回答