Edited at

【PHP】Carbonで日曜日(週の最初)の日付を取得する

More than 1 year has passed since last update.

Carbon - A simple PHP API extension for DateTime.

Carbonのデフォルトでは週の最初は月曜日に設定されているのでstartOfWeek()を使うと月曜日の日付が返ってくる

日曜日の日付を取得したいときに困ったので調べてみた


方法1: 1日引く

デフォルトで月曜日が返ってくるわけなのでstartOfWeek()->subDay(1)と1日引くことで日曜日の日付が取得できる

$dt = Carbon::today(); // 2016-10-07 00:00:00

$dt->startOfWeek(); // 2016-10-03 00:00:00
$dt->startOfWeek()->subDay(1); // 2016-10-02 00:00:00


方法2: 週の最初を日曜日に設定する

setWeekStartsAt()にint(0-6)を渡すとその曜日を週の最初にしてくれる

Carbonでは定数としてSUNDAYが 0 に設定されているのでsetWeekStartsAt(Carbon::SUNDAY)とすればstartOfWeek()は日曜日の日付を返してくれる

週末がデフォルトで日曜日になっているので、一緒にsetWeekEndsAt(Carbon::SATURDAY)と週末を土曜日に設定しておくと良い

Carbon::setWeekStartsAt(Carbon::SUNDAY); // 週の最初を日曜日に設定

Carbon::setWeekEndsAt(Carbon::SATURDAY); // 週の最後を土曜日に設定
$dt = Carbon::today(); // 2016-10-07 00:00:00
$dt->startOfWeek(); // 2016-10-02 00:00:00
$dt->endOfWeek(); // 2016-10-08 23:59:59

一回だけ取得するなら方法1、何度も取得するなら方法2が良いんじゃないかなと思うけどやりやすい方使えばいいと思う