0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel:Carbonの値が変わる

Posted at

事象

  • Carbonクラスのインスタンスを操作すると、元のインスタンスの値が変わる
// 現在年月日が2022-01-01だとする
//インスタンス作成
$now = Carbon::now();
var_dump($now->format('Y-m-d')) // 2022-01-01
// 一日加える
$addOneDay = $now->add(1, 'day');
// 結果
var_dump($now->format('Y-m-d')) // 2022-01-02 ← 注目!!
var_dump($addOneDay->format('Y-m-d')) // 2022-01-02

原因

  • CarbonクラスのインスタンスはMutable(可変)だから

解決策

  • copy()を使用する
// 現在年月日が2022-01-01だとする
//インスタンス作成
$now = Carbon::now();
var_dump($now->format('Y-m-d')) // 2022-01-01
// 一日加える
$addOneDay = $now->copy()->add(1, 'day'); ← 注目!!
// 結果
var_dump($now->format('Y-m-d')) // 2022-01-01 ← 期待通り
var_dump($addOneDay->format('Y-m-d')) // 2022-01-02
  • Immutableにする
// 現在年月日が2022-01-01だとする
//インスタンス作成
$now = Carbon::now();
var_dump($now->format('Y-m-d')) // 2022-01-01
// CarbonImmutableクラスに変換
$now->toImmutable(); ← 注目!!
// 一日加える
$addOneDay = $now->add(1, 'day');
// 結果
var_dump($now->format('Y-m-d')) // 2022-01-01 ← 期待通り
var_dump($addOneDay->format('Y-m-d')) // 2022-01-02
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?