こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、12年目エンジニアです。
この記事では、 PHPでDateTimeインスタンスをnewで生成するやり方について
- DateTimeインスタンスをnewで生成するやり方
- DateTimeインスタンスをnewで生成するときの注意点
- サンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
DateTimeインスタンスをnewで生成するやり方
DateTimeインスタンスをnewで生成するやり方を解説します。
DateTimeインスタンス生成する基本は
1 |
$result = new DateTime(); |
で生成できます。
引数を設定していないので、変数resultには実行しているPHPのタイムゾーンを基にして実行した日時の
1 |
2024-01-05 23:17:40.775124 |
というようなDateTimeインスタンスが生成されて返されます。
タイムゾーンを確認するやり方はこちらの記事をご参考ください。
newするときに、
1 2 3 |
$result1 = new DateTime('tomorrow'); $result2 = new DateTime('yesterday'); $result3 = new DateTime('2020-02-02'); |
という引数を指定することができます。
指定すると、指定した引数に沿ったDateTimeインスタンスが生成されて返されます。
上記だと
- 変数result1には実行日時の明日
- 変数result2には実行日時の昨日
- 変数result3には2020年2月2日
のDateTimeインスタンスがそれぞれ返されます。
ほかにも引数には
- last week
- -1 week
- next month
- first day of March
というような値を指定することができます。
第二引数を指定すると、第二引数で設定されているタイムゾーンを基にしてDateTimeインスタンスを生成して返します。
1 |
$result = new DateTime('tomorrow', 'Europe/London'); |
まとめるとDateTimeインスタンスをnewで生成するときに指定できる引数は
第一引数(任意) | DateTimeインスタンスを生成したい日時 |
---|---|
第二引数(任意) | 生成する基にするタイムゾーン |
です。
DateTimeインスタンスをnewで生成するときの注意点
DateTimeインスタンスをnewで生成するときの注意点は、2点あります。
1点目は第一引数に指定する値は、意味が通るものを指定する、という点です。
たとえば
1 |
$result = new DateTime('aaaa'); |
とただの文字列を指定して実行すると
1 2 3 4 |
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\htdocs\sample.php:2 Stack trace: #0 C:\xampp\htdocs\sample.php(2): DateTime->__construct('aaaa') #1 {main} thrown in C:\xampp\htdocs\sample.php on line 2 |
例外が発生します。
2点目は第二引数に指定する値は、存在するタイムゾーンを指定する、という点です。
たとえば
1 |
$result = new DateTime('tomorrow', 'sample'); |
というような存在しないタイムゾーンを指定して実行した場合
1 2 3 4 |
Fatal error: Uncaught TypeError: DateTime::__construct(): Argument #2 ($timezone) must be of type ?DateTimeZone, string given in C:\xampp\htdocs\sample.php:2 Stack trace: #0 C:\xampp\htdocs\sample.php(2): DateTime->__construct('tomorrow', 'sample') #1 {main} thrown in C:\xampp\htdocs\sample.php on line 2 |
例外が発生します。
第一、第二引数に値を設定する場合は、ご注意ください。
では、次の章で実際に使ってみます。
DateTimeインスタンスをnewで生成を解説するプログラムの概要
DateTimeインスタンスをnewで生成を解説するプログラムでは、第一引数に様々な値を設定して10種類のDateTimeインスタンスを生成します。
生成されたDateTimeインスタンスを表示させて確認します。
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 48 49 50 51 52 53 |
<?php print('■DateTimeインスタンスをnewで生成するサンプル<br >'); print('・何も指定なし<br >'); $date1 = new DateTime(); var_dump($date1); print('<br >'); print('・todayを指定<br >'); $date2 = new DateTime('today'); var_dump($date2); print('<br >'); print('・tomorrowを指定<br >'); $date3 = new DateTime('tomorrow'); var_dump($date3); print('<br >'); print('・yesterdayを指定<br >'); $date4 = new DateTime('yesterday'); var_dump($date4); print('<br >'); print('・next Thursdayを指定<br >'); $date5 = new DateTime('next Thursday'); var_dump($date5); print('<br >'); print('・last weekを指定<br >'); $date6 = new DateTime('last week'); var_dump($date6); print('<br >'); print('・next monthを指定<br >'); $date7 = new DateTime('next month'); var_dump($date7); print('<br >'); print('・+1 weekを指定<br >'); $date8 = new DateTime('+1 week'); var_dump($date8); print('<br >'); print('・first day of August 2008を指定<br >'); $date9 = new DateTime('first day of August 2008'); var_dump($date9); print('<br >'); print('・2023-03-04を指定<br >'); $date10 = new DateTime('2023-03-04'); var_dump($date10); print('<br >'); ?> |
実行結果
XAMPPを起動して、【http://localhost/sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
引数に指定した値でDateTimeインスタンスを生成できていることが確認できました!
まとめ:DateTimeインスタンスをnewで生成してみよう!
以上がDateTimeインスタンスをnewで生成するやり方についての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント