PHPのCarbonで日付の処理

Carbonをインポートする

>>> use Carbon\Carbon;

月末の日付を取得する

翌月の0日が当月の月末の日付になる

>>> $lastDateOfMonth = Carbon::create(2020, 1, 0);
=> Carbon\Carbon {#1261
     +"date": "2019-12-31 07:43:46.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

曜日を習得する(0:日曜日〜6:土曜日)

>>> Carbon::create(2020,2,2)->dayOfWeek;
=> 0
>>> Carbon::create(2020,2,3)->dayOfWeek;
=> 1
>>> Carbon::create(2020,2,8)->dayOfWeek;
=> 6

曜日の数値は定数で定義されている

>>> Carbon::SUNDAY
=> 0
>>> Carbon::MONDAY
=> 1
>>> Carbon::TUESDAY
=> 2
>>> Carbon::WEDNESDAY
=> 3
>>> Carbon::THURSDAY
=> 4
>>> Carbon::FRIDAY
=> 5
>>> Carbon::SATURDAY
=> 6

月の日数を取得する

>>> Carbon::create(2020, 2, 1)->daysInMonth;
=> 29

直前の日曜日の日付を取得する

>>> $today = Carbon::create(2020, 3, 14);
=> Carbon\Carbon {#1247
     +"date": "2020-03-14 07:45:41.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }
>>> $today->addDays(-$today->dayOfWeek);
=> Carbon\Carbon {#1247
     +"date": "2020-03-08 07:45:41.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

日の始まり日時(0時0分0秒)を取得する

startOfDay()メソッドは日の始まり日時(0時0分0秒)を返す。

>>> $dt = Carbon::create(2012, 1, 31, 12, 0, 0);
=> Carbon\Carbon {#1254
     +"date": "2012-01-31 12:00:00.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }
>>> $dt->startOfDay();
=> Carbon\Carbon {#1254
     +"date": "2012-01-31 00:00:00.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

週の始まりと終わりの日付

startOfWeek()メソッドは週の始まりの日付を返す。

>>> Carbon::create(2012, 1, 31, 12, 0, 0)->startOfWeek();
=> Carbon\Carbon {#1317
     +"date": "2012-01-30 00:00:00.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

endOfWeek()メソッドは週の終わりの日付を返す。

>>> Carbon::create(2012, 1, 31, 12, 0, 0)->endOfWeek();
=> Carbon\Carbon {#1304
     +"date": "2012-02-05 23:59:59.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

週の始まりの曜日は、Carbon::getWeekStartsAt()メソッドで取得する。

>>> Carbon::getWeekStartsAt();
=> 1

週の始まりの曜日を設定するには、Carbon::setWeekStartsAt()メソッドを使用する。

>>> Carbon::setWeekStartsAt(Carbon::SUNDAY);
=> null
>>> Carbon::create(2012, 1, 31, 12, 0, 0)->startOfWeek();
=> Carbon\Carbon {#1313
     +"date": "2012-01-29 00:00:00.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }

週の終わりの曜日は、Carbon::getWeekEndsAt()メソッドで取得し、Carbon::setWeekEndsAt()メソッドで設定する。

月の何周目か

weekOfMonthは、日付が月のどの週に該当するかを示す1〜5の値を返す。

>>> Carbon::create(2020, 11, 1)->weekOfMonth;
=> 1
>>> Carbon::create(2020, 11, 7)->weekOfMonth;
=> 1
>>> Carbon::create(2020, 11, 8)->weekOfMonth;
=> 2
>>> Carbon::create(2020, 11, 30)->weekOfMonth;
=> 5
>>> Carbon::create(2020, 12, 1)->weekOfMonth;
=> 1

Unixタイムスタンプを取得する。

getTimestamp()メソッドやunix()メソッドは、Unixタイムスタンプを返す。
PHPの組み込みのmktime()関数と同じです。

>>> Carbon::create(2020, 3, 14)->getTimestamp();
=> 1584111600
>>> Carbon::create(2020, 3, 14)->unix()
=> 1584111600
>>> mktime(0, 0, 0, 3, 14, 2020);
=> 1584111600

日時を表す文字列のフォーマットを指定する

format()メソッドの引数にフォーマットを指定します。
受け取るフォーマットは、PHPの標準関数のdate()と同じです。

>>> Carbon::now('Asia/Tokyo')->format('Y/m/d H:i:s');
=> "2021/08/14 10:32:48"

タイムゾーンを指定する

タイムゾーンを指定して現在日時を取得する時は、now()メソッドの引数にタイムゾーンを指定します。

>>> Carbon::now('Asia/Tokyo')->format('Y/m/d H:i:s');
=> "2021/08/14 10:32:48"
>>> Carbon::now('America/Vancouver')->format('Y/m/d H:i:s');
=> "2021/08/13 18:32:48"

setTimeZone()メソッドを使うことで、タイムゾーンを変更できます。

>>> $now = Carbon::now('Asia/Tokyo');
=> Carbon\Carbon @1628904768 {#4387
date: 2021-08-14 10:32:48.0 Asia/Tokyo (+09:00),
}
>>> $now->format('Y/m/d H:i:s');
=> "2021/08/14 10:32:48"
>>> $now = $now->setTimeZone('America/Vancouver');
=> Carbon\Carbon @1628904768 {#4387
date: 2021-08-13 18:32:48.0 America/Vancouver (-07:00),
}
>>> $now->format('Y/m/d H:i:s');
=> "2021/08/13 18:32:48"

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください