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"