🚀
PHP Carbonで日付操作
日本の現在の日時を取得(TimeZomeがUTCになっているので注意)
$now = new Carbon(null, 'Asia/Tokyo');
$nowDateTimeString =$now->toDateTimeString();
var_dump($nowDateTimeString); // "2023-07-10 17:44:22"
Laravelでnew Carbon()で時間を日本時間にする場合、以下の設定が必要
config/app.php
// 'timezone' => 'UTC',
'timezone' => 'Asia/Tokyo',
$now = new Carbon();
$nowDateTimeString =$now->toDateTimeString();
var_dump($nowDateTimeString); // "2023-07-10 17:44:22"
Carbonで時間をずらすと、元のインスタンスも影響する(mutable)
$now = Carbon::now();
$anhhurLater = $now->addHour();
dump($now->toDateTImeString());// "2023-07-12 08:20:33"
dd($anhhurLater->toDateTimeString());// "2023-07-12 08:20:33"
formatの色々なパターン(DateTimeクラスと同じformatの引数)
$now = Carbon::now();
$now->format('Y/m/d');// "2023/07/12"
$now->format('H:i');// "07:25
$now->format('H:i:s');// "07:26:30"
$now->format('H:i:s.u');// "07:27:05.813475"
$now->format('w');// 曜日:0 (日曜)から 6 (土曜)
$now->format('l jS \o\f F Y h:i:s A');// "Wednesday 12th of July 2023 07:33:10 AM"
$now->format('Y/m/d D h:i:s A');// "2023/07/12 Wed 07:36:00 AM"
CarbonにGetterメソッドがある・。例えば、年だけとか、月だけとか比較するのに使いたい時に使える
$dt = Carbon::parse('2012-10-5 23:26:11.123789');
// These getters specifically return integers, ie intval()
var_dump($dt->year); // int(2012)
var_dump($dt->month); // int(10)
var_dump($dt->day); // int(5)
var_dump($dt->hour); // int(23)
var_dump($dt->minute); // int(26)
var_dump($dt->second); // int(11)
var_dump($dt->micro); // int(123789)
// dayOfWeek returns a number between 0 (sunday) and 6 (saturday)
var_dump($dt->dayOfWeek); // int(5)
// dayOfWeekIso returns a number between 1 (monday) and 7 (sunday)
var_dump($dt->dayOfWeekIso); // int(5)
var_dump($dt->englishDayOfWeek); // string(6) "Friday"
var_dump($dt->shortEnglishDayOfWeek); // string(3) "Fri"
var_dump($dt->locale('ja')->dayName); // string(7) "金曜日"
var_dump($dt->locale('ja')->shortDayName); // string(3) "金"
var_dump($dt->locale('ja')->minDayName); // string(2) "金"
var_dump($dt->englishMonth); // string(7) "October"
var_dump($dt->shortEnglishMonth); // string(3) "Oct"
var_dump($dt->locale('ja')->monthName); // string(7) ""10月"
var_dump($dt->locale('ja')->shortMonthName); // string(3) "10月"
日時1 === 日時2
// マイクロ秒まで全く同じ
$dt1 = new Carbon('2012-10-5 23:26:11.123789');
$dt2 = new Carbon('2012-10-5 23:26:11.123789');
$bool = $dt1->eq($dt2);
var_dump($bool);// true
// 秒まで同じで比較
$dt1 = new Carbon('2012-10-5 23:26:11');
$dt2 = new Carbon('2012-10-5 23:26:11');
$bool = $dt1->eq($dt2);
var_dump($bool);// true
// マイクロ秒が違う
$dt1 = new Carbon('2012-10-5 23:26:11.123789');
$dt2 = new Carbon('2012-10-5 23:26:11.000000');
$bool = $dt1->eq($dt2);
var_dump($bool);// false
日時1 > 日時2かどうか
$dt1 = new Carbon('2012-10-5 23:26:12');
$dt2 = new Carbon('2012-10-5 23:26:11');
$bool = $dt1->gt($dt2);
var_dump($bool);// true
日時1 >= 日時2かどうか(gtd = greater equal)
$dt1 = new Carbon('2012-10-5 23:26:12');
$dt2 = new Carbon('2012-10-5 23:26:12');
$bool = $dt1->gte($dt2);
var_dump($bool);// true
$dt1 = new Carbon('2012-10-5 23:26:13');
$dt2 = new Carbon('2012-10-5 23:26:12');
$bool = $dt1->gte($dt2);
var_dump($bool);// true
日時1 < 日時2
$dt1 = new Carbon('2012-10-5 23:26:11');
$dt2 = new Carbon('2012-10-5 23:26:12');
$bool = $dt1->lt($dt2);
var_dump($bool);// true
日時1 <= 日時2
$dt1 = new Carbon('2012-10-5 23:26:11');
$dt2 = new Carbon('2012-10-5 23:26:12');
$bool = $dt1->lt($dt2);
var_dump($bool);// true
$dt1 = new Carbon('2012-10-5 23:26:12');
$dt2 = new Carbon('2012-10-5 23:26:12');
$bool = $dt1->lte($dt2);
var_dump($bool);// true
日時1 <= 日時2 <= 日時3
$dt1 = new Carbon('2012-10-5 23:26:11');
$dt2 = new Carbon('2012-10-5 23:26:12');
$dt3 = new Carbon('2012-10-5 23:26:13');
$bool = $dt2->between($dt1, $dt3);
var_dump($bool);// true
Discussion