こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、12年目エンジニアです。
この記事では、 PHPでCarbonインスタンスをnewで生成するやり方について
- Carbonインスタンスをnewで生成するやり方
- Carbonインスタンスをnewで生成するときの注意点
- サンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
Carbonライブラリのバージョン | 2.71.0 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
Carbonライブラリとは、年月日や時間を扱うライブラリです。
Carbonライブラリの基本的な使い方については、こちらの記事をご参考ください。
Carbonインスタンスをnewで生成するやり方
Carbonインスタンスをnewで生成するやり方を解説します。
Carbonインスタンス生成する基本は
1 |
$result = new Carbon(); |
で生成できます。
変数resultには実行しているPHPのタイムゾーンを基にして実行した日時の
1 |
2023-10-11 23:26:03 |
というようなCarbonインスタンスが生成されて返されます。
タイムゾーンを確認するやり方はこちらの記事をご参考ください。
newするときに、
1 2 3 |
$result1 = new Carbon('tomorrow'); $result2 = new Carbon('yesterday'); $result3 = new Carbon('2020-02-02'); |
という引数を指定することができます。
指定すると、指定した引数に沿ったCarbonインスタンスが生成されて返されます。
上記だと
- 変数result1には実行日時の明日
- 変数result2には実行日時の昨日
- 変数result3には2020年2月2日
のCarbonインスタンスがそれぞれ返されます。
ほかにも引数には
- last week
- -1 week
- next month
- first day of March
というような値を指定することができます。
第二引数を指定すると、第二引数で設定されているタイムゾーンを基にしてCarbonインスタンスを生成して返します。
1 |
$result = new Carbon('tomorrow', 'Europe/London'); |
まとめるとCarbonインスタンスをnewで生成するときに指定できる引数は
第一引数(任意) | Carbonインスタンスを生成したい日時 |
---|---|
第二引数(任意) | 生成する基にするタイムゾーン |
です。
Carbonインスタンスをnewで生成するときの注意点
Carbonインスタンスをnewで生成するときの注意点は、2点あります。
1点目は第一引数に指定する値は、意味が通るものを指定する、という点です。
たとえば
1 |
$result = new Carbon('aaaa'); |
とただの文字列を指定して実行すると
1 2 3 4 5 6 7 8 |
Fatal error: Uncaught Exception: Failed to parse time string (aaaa) at position 0 (a): The timezone could not be found in the database in C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php:89 Stack trace: #0 C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php(89): DateTime->__construct('aaaa', Object(Carbon\CarbonTimeZone)) #1 C:\xampp\htdocs\sample.php(6): Carbon\Carbon->__construct('aaaa') #2 {main} Next Carbon\Exceptions\InvalidFormatException: Failed to parse time string (aaaa) at position 0 (a): The timezone could not be found in the database in C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php:91 Stack trace: #0 C:\xampp\htdocs\sample.php(6): Carbon\Carbon->__construct('aaaa') #1 {main} thrown in C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php on line 91 |
例外が発生します。
2点目は第二引数に指定する値は、存在するタイムゾーンを指定する、という点です。
たとえば
1 |
$result = new Carbon('tomorrow', 'sample'); |
というような存在しないタイムゾーンを指定して実行した場合
1 2 3 4 5 6 7 8 9 |
Fatal error: Uncaught Carbon\Exceptions\InvalidTimeZoneException: Unknown or bad timezone (sample) in C:\xampp\vendor\nesbot\carbon\src\Carbon\CarbonTimeZone.php:109 Stack trace: #0 C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Date.php(626): Carbon\CarbonTimeZone::instance('sample', NULL) #1 C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php(89): Carbon\Carbon::safeCreateDateTimeZone('sample') #2 C:\xampp\htdocs\sample.php(5): Carbon\Carbon->__construct('tomorrow', 'sample') #3 {main} Next Carbon\Exceptions\InvalidFormatException: Unknown or bad timezone (sample) in C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php:91 Stack trace: #0 C:\xampp\htdocs\sample.php(5): Carbon\Carbon->__construct('tomorrow', 'sample') #1 {main} thrown in C:\xampp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php on line 91 |
例外が発生します。
第一、第二引数に値を設定する場合は、ご注意ください。
では、次の章で実際に使ってみます。
Carbonインスタンスをnewで生成を解説するプログラムの概要
Carbonインスタンスをnewで生成を解説するプログラムでは、第一引数に様々な値を設定して10種類のCarbonインスタンスを生成します。
生成されたCarbonインスタンスを表示させて確認します。
phpプログラムは
C:\xampp\htdocs
配下に、【sample.php】というファイル名で格納しています。
PHPサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php require __DIR__ . "/../vendor/autoload.php"; use Carbon\Carbon; print('■Carbonインスタンスをnewで生成するサンプル<br >'); print('・何も指定なし<br >'); $date1 = new Carbon(); print($date1.'<br >'); print('・todayを指定<br >'); $date2 = new Carbon('today'); print($date2.'<br >'); print('・tomorrowを指定<br >'); $date3 = new Carbon('tomorrow'); print($date3.'<br >'); print('・yesterdayを指定<br >'); $date4 = new Carbon('yesterday'); print($date4.'<br >'); print('・next Thursdayを指定<br >'); $date5 = new Carbon('next Thursday'); print($date5.'<br >'); print('・last weekを指定<br >'); $date6 = new Carbon('last week'); print($date6.'<br >'); print('・next monthを指定<br >'); $date7 = new Carbon('next month'); print($date7.'<br >'); print('・+1 weekを指定<br >'); $date8 = new Carbon('+1 week'); print($date8.'<br >'); print('・first day of August 2008を指定<br >'); $date9 = new Carbon('first day of August 2008'); print($date9.'<br >'); print('・2023-03-04を指定<br >'); $date10 = new Carbon('2023-03-04'); print($date10.'<br >'); ?> |
実行結果
XAMPPを起動して、【http://localhost/sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
引数に指定した値でのCarbonインスタンスを生成できていることが確認できました!
まとめ:Carbonインスタンスをnewで生成してみよう!
以上がCarbonインスタンスをnewで生成するやり方についての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント