setTime Carbon 还影响其他变量

setTime Carbon also affexts other variable

我有 Carbon Object Date,我更改了 start_date 和 end_date 的时间,结果是它们变成了同一件事,即使我将它保存在一个单独的变量中。

输入

    $this->temp_mon_start = $date->setTime(8,0);
    $this->temp_mon_end = $date->setTime(3,0);  
    dd($this->temp_mon_start, $this->temp_mon_end);

输出

   date: 2021-11-15 03:00:00.0 Asia/Singapore (+08:00)
   date: 2021-11-15 03:00:00.0 Asia/Singapore (+08:00)

它似乎将最后一个 setTime 保存在 $date 变量上,我不知道是什么导致了这个问题。我正在使用 Laravel 和 Carbon。有什么可能的选择吗?感谢您的帮助。

Carbon 就是这样工作的。它不会创建新实例,而是会更改现有实例。

所以没有使用:

$this->temp_mon_start = $date->setTime(8,0);

您可以使用:

$this->temp_mon_start = $date->copy()->setTime(8,0);

copy() 方法创建 Carbon 对象的新实例。