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が良いんじゃないかなと思うけどやりやすい方使えばいいと思う