Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】DateTime::getMicrosecond()メソッドの使い方

getMicrosecondメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getMicrosecondメソッドは、DateTimeオブジェクトからマイクロ秒を取得するメソッドです。このメソッドは、PHPのバージョン8以降で導入され、DateTimeクラスに属しています。DateTimeオブジェクトは日付と時刻を扱うためのPHPの標準的なクラスですが、getMicrosecondメソッドはそのDateTimeオブジェクトが保持している時刻情報の中から、秒以下の非常に細かい単位であるマイクロ秒の部分だけを取り出す役割を担います。

具体的には、1秒を100万分の1に分割した単位がマイクロ秒であり、このメソッドは0から999999までの整数値としてマイクロ秒の値を返します。例えば、ある時刻が「2023年10月27日 10時30分15秒と123456マイクロ秒」であった場合、このメソッドを呼び出すと「123456」という値が得られます。

システム開発においては、単に秒単位での時刻管理だけでは不十分なケースが少なくありません。特に、ログの記録でイベント発生の正確な順序を追跡したい場合や、複数の処理にかかる時間をミリ秒やマイクロ秒といった高精度で比較・計測したい場合に、このgetMicrosecondメソッドは非常に有用です。これにより、より詳細で信頼性の高い時間情報を取得し、システムの精度や分析能力を向上させることができます。初心者の方でも、日時情報の高精度な扱いに慣れる上で、重要なメソッドの一つとして理解しておくと良いでしょう。

構文(syntax)

1<?php
2$datetime = new DateTime('2023-01-01 12:34:56.789123');
3$microseconds = $datetime->getMicrosecond();
4echo $microseconds;
5?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

このメソッドは、DateTimeオブジェクトが表す時刻のマイクロ秒(0から999999までの整数)を返します。

サンプルコード

PHP 8 DateTime::getMicrosecond()でマイクロ秒を取得する

1<?php
2
3// DateTimeクラスは、日付と時刻の情報を扱うためのPHPの組み込みクラスです。
4// PHP 8 から、DateTimeオブジェクトが持つマイクロ秒部分を直接取得するgetMicrosecond()メソッドが追加されました。
5
6/**
7 * 現在の時刻のマイクロ秒部分を取得し、表示するサンプルコードです。
8 * システムエンジニアリングでは、高精度な時刻情報が必要な場面で役立ちます。
9 */
10
11// 1. 現在のDateTimeオブジェクトを作成します。
12//    これにより、現在の日付、時刻、そしてマイクロ秒の情報が取得されます。
13$now = new DateTime();
14
15// 2. getMicrosecond()メソッドを使用して、DateTimeオブジェクトからマイクロ秒部分を取得します。
16//    このメソッドは引数を取らず、0から999999までの整数を返します。
17$microseconds = $now->getMicrosecond();
18
19// 3. 取得したマイクロ秒の値をコンソールに出力します。
20echo "現在の時刻のマイクロ秒部分: " . $microseconds . "μs\n";
21
22// 4. 特定のマイクロ秒を持つDateTimeオブジェクトを作成し、getMicrosecond()でその値を確認する例です。
23//    DateTime::createFromFormat()を使って、指定したフォーマットで日付と時刻をパースします。
24//    'u' はマイクロ秒を表すフォーマット文字です。
25$specificTimeInput = '2023-10-27 15:30:00.123456';
26$format = 'Y-m-d H:i:s.u';
27$specificTime = DateTime::createFromFormat($format, $specificTimeInput);
28
29if ($specificTime instanceof DateTime) {
30    $specificMicroseconds = $specificTime->getMicrosecond();
31    echo "指定された時刻 '" . $specificTimeInput . "' のマイクロ秒部分: " . $specificMicroseconds . "μs\n";
32} else {
33    // 日付時刻のパースに失敗した場合のエラーハンドリング
34    echo "指定された日付時刻のフォーマットが不正なため、パースに失敗しました。\n";
35}
36

PHP 8で追加されたDateTimeクラスのgetMicrosecond()メソッドは、日付と時刻を扱うDateTimeオブジェクトが保持するマイクロ秒部分を整数で取得するために使用されます。このメソッドは引数を一切取らず、0から999999までの整数値を戻り値として返します。システムエンジニアリングでは、プログラムの実行時間をより詳細に計測したり、高精度なログを記録したりするなど、高精度な時刻情報が求められる場面で非常に役立ちます。

サンプルコードでは、まずnew DateTime()で現在のシステム時刻を持つDateTimeオブジェクトを作成し、$now->getMicrosecond()を呼び出すことで、現在の時刻のマイクロ秒部分を取得して表示しています。これにより、現在時刻のミリ秒よりも細かいマイクロ秒単位の情報を手軽に取得できることがわかります。

また、DateTime::createFromFormat()を使用して、特定のマイクロ秒(例: .123456)を含む文字列からDateTimeオブジェクトを生成し、そのオブジェクトに対してもgetMicrosecond()メソッドを適用して、正しくマイクロ秒が取得できることを示しています。このように、既存の時刻データからマイクロ秒を抽出したり、任意のマイクロ秒を設定した時刻情報を作成したりする際に、このメソッドが柔軟に利用できるため、より詳細な時間管理が可能となります。

getMicrosecond()メソッドはPHP 8以降で利用可能なため、PHPのバージョンを確認してください。このメソッドは0から999999までの整数を返し、DateTimeオブジェクトが持つ秒未満のマイクロ秒部分を示します。new DateTime()でオブジェクトを生成した場合、取得されるマイクロ秒の精度は実行環境のシステム時刻に依存します。また、DateTime::createFromFormat()を使って特定のマイクロ秒を持つ時刻文字列をパースする際は、フォーマット文字uを忘れずに指定し、パースに失敗するとfalseが返されるため、必ずinstanceof DateTimeなどで適切にエラーチェックを行ってください。この機能は、高精度な時刻情報を必要とするシステム性能計測や厳密なイベントログ記録などで特に活用されます。

PHP DateTimeでマイクロ秒を取得する

1<?php
2
3/**
4 * DateTime::getMicrosecond() の使用例。
5 * 現在時刻からマイクロ秒部分を取得して表示します。
6 */
7function demonstrateGetMicrosecond(): void
8{
9    // 現在のDateTimeオブジェクトを作成
10    // PHP 8 では、デフォルトでマイクロ秒まで保持されます
11    $now = new DateTime();
12
13    // DateTime::getMicrosecond() メソッドを使用して、マイクロ秒部分を取得
14    $microseconds = $now->getMicrosecond();
15
16    // 結果を表示
17    echo "現在の時刻 (YYYY-MM-DD HH:MM:SS.uuuuuu): " . $now->format('Y-m-d H:i:s.u') . "\n";
18    echo "取得されたマイクロ秒: " . $microseconds . "マイクロ秒\n";
19
20    // 特定のマイクロ秒を持つDateTimeオブジェクトを作成して確認
21    $specificTime = DateTime::createFromFormat('Y-m-d H:i:s.u', '2023-10-27 10:30:15.123456');
22    if ($specificTime !== false) {
23        $specificMicroseconds = $specificTime->getMicrosecond();
24        echo "\n特定の時刻 (2023-10-27 10:30:15.123456) から取得されたマイクロ秒: " . $specificMicroseconds . "マイクロ秒\n";
25    }
26}
27
28// 関数を実行
29demonstrateGetMicrosecond();
30
31?>

PHPのDateTime::getMicrosecond()メソッドは、日付や時刻を扱うDateTimeオブジェクトから、時間の最小単位である「マイクロ秒」の部分を整数値として取得する際に利用されます。マイクロ秒は1秒の100万分の1を表す単位です。

サンプルコードでは、最初にnew DateTime()を使って現在時刻のDateTimeオブジェクトを作成しています。PHP 8以降では、このオブジェクトはデフォルトでマイクロ秒まで保持する高精度な時刻情報を持っています。

次に、作成した$nowオブジェクトに対してgetMicrosecond()メソッドを呼び出すことで、現在の時刻が持つマイクロ秒部分を取得しています。このメソッドは引数を一切必要とせず、取得したマイクロ秒の値をint型(整数)で返します。例えば、時刻が「10:30:15.123456」であれば、「123456」という数値が戻り値となります。

また、サンプルコードの後半では、DateTime::createFromFormat()を用いて意図的にマイクロ秒を指定した日時を作成し、そこからgetMicrosecond()で正確にマイクロ秒が取得できることを示しています。この機能は、システムのログ記録、パフォーマンス測定、イベントの発生時刻の厳密な管理など、時間の精度が求められるさまざまな場面で非常に有用です。

DateTime::getMicrosecond()メソッドは、PHP 8以降の環境で利用できる点にご注意ください。このメソッドは、指定されたDateTimeオブジェクトのマイクロ秒部分を、0から999999までの整数(int)として返します。new DateTime()で現在時刻のオブジェクトを作成した場合、多くはシステム時刻の精度に合わせてマイクロ秒が自動的に設定されます。しかし、DateTime::createFromFormat()を使って日時を指定する際は、フォーマット文字列に.uを含めてマイクロ秒を明示しないと、取得されるマイクロ秒が常に0になる可能性があります。正確な時間測定やログ記録など、より詳細な時間精度が必要な場面で活用できます。

関連コンテンツ

関連プログラミング言語