PHPのミリ秒変換をよくわかる解説で簡単理解!

PHPでdate関数を使うと、通常意識するのは秒までかと思います。

しかし、それ以上細かい単位ミリ秒を扱いたい場合もあります。

今回は、PHPでミリ秒を扱うために以下の内容のお話をします。

【解説】PHPの時間とは
【基本】microtime関数でミリ秒を使う
【応用】ミリ秒が必要な時

目次

PHPでの時間について

まずミリ秒の解説をする前に、PHPの中で使う時間はどのように表現されるか解説します。

タイムスタンプ

以下のような日付があったとします。

2018/1/1 10:55:05

しかしPHPの内部では以下のように認識されています。

1514771705

これは、西暦や日付や時間を秒に変換した数値です。

この数値をタイムスタンプと呼びます。

少し詳しい話をすると、【1970年1月1日 00:00:00 GMT】からその時間まで何秒経っているかを表します。

date関数と書式変換

続いて、日付を扱う時のdate関数についてお話します。

//第一引数だけの場合
echo date("Y/m/d H:i:s");

上記のように書くと以下のような結果になります。

2018/1/1 10:55:05

date関数の第一引数に出力したい書式を指定します。

そうすると現在の時間の結果が出力されます。

//第二引数まで指定した場合
echo date("Y/m/d H:i:s", 1514771705);

上記のように書くと以下のような結果になります。

2018/1/1 10:55:05

第一引数に書式、第二引数にはタイムスタンプを入力します。

そうすると、そのタイムスタンプを指定した書式で出力してくれます。

date関数についてもっと詳しく知りたい場合は以下を参考にしてください。

microtime関数について

続いて、タイムスタンプを扱うための関数microtimeについてです。

echo strtotime("2018/1/1 10:55:05");

上記のように書くと以下のような結果になります。

1514771705

date関数の第一引数に年月日を指定します。

そうすると指定した年月日のタイムスタンプが出力されます。

このようにして前章で説明したタイムスタンプを取得する事ができます。

PHPの時間の扱いについては理解して頂けましたでしょうか。

それでは、いよいよ次章からミリ秒について解説します。

ミリ秒変換を行ってみよう

ミリ秒の変換についてはmicrotime関数を使用します。

使い方は簡単で、以下のように使います。

echo microtime();
結果
0.64878500 1540722712

microtime関数は、現在の時刻をマイクロタイム秒までタイムスタンプで返します。

半角で区切って、左側がマイクロ秒で右側がタイムスタンプです。

また、microtimeはあくまでも現在の時間の測定です。

過去のタイムスタンプをミリ秒変換する事はできませんので注意です。

なぜならば、タイムスタンプは秒単位であるからです。

実行時間の計測

microtimeでミリ秒の取得がわかりましたが、実際どのように使用するのでしょうか。

特に、処理毎の実行時間測定などに使います。

パフォーマンス改善に有効です。

実際以下のようにコードに仕込んで使用します。

<?php
$start_time = explode('.',microtime(true));

// 計測したい処理

$end_time = explode('.',microtime(true));

echo $end_time[0] - $start_time[0];

計測したい処理の前に、microtimeを実行して計算しやすい形に分割します。

処理の後にまた計測して、最後に引き算をするとかかった時間が分かるという仕組みです。

簡単に測定できますので、是非覚えておいて頂きたいです。

ミリ秒単位のsleep

最後に、ミリ秒単位でsleepを入れる方法を説明します。

sleepというのはプログラムを一時的に停止させる関数です。

sleepでは最小1秒しか設定できません。

それ以上小さい数値を設定するにはusleepを使用します。

0.3秒スリープさせるには以下のように記述します。

usleep(300000);

簡単ですが、これも是非覚えておいてください。

まとめ

今回はPHPのミリ秒について解説しました。

ミリ秒を理解するためには、PHPでの時間の扱いも理解する必要があります。

しっかり覚えておいて頂きたいです。

それでは、また。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次