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

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

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

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

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

目次

PHPでの時間について

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

タイムスタンプ

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

2018/1/1 10:55:05

[su_spacer size=”20″]

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

1514771705

[su_spacer size=”20″]

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

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

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

date関数と書式変換

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

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

[su_spacer size=”20″]

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

2018/1/1 10:55:05

[su_spacer size=”20″]
date関数の第一引数に出力したい書式を指定します。

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

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

[su_spacer size=”20″]

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

2018/1/1 10:55:05

[su_spacer size=”20″]
第一引数に書式、第二引数にはタイムスタンプを入力します。

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

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

microtime関数について

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

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

[su_spacer size=”20″]

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

1514771705

[su_spacer size=”20″]

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

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

このようにして前章で説明したタイムスタンプを取得する事ができます。
[su_spacer size=”20″]

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

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

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

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

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

echo microtime();

[su_spacer size=”20″]

結果
0.64878500 1540722712

[su_spacer size=”20″]

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

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

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

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

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

実行時間の計測

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

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

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

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

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

// 計測したい処理

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

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

[su_spacer size=”20″]

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

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

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

ミリ秒単位のsleep

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

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

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

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

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

usleep(300000);

[su_spacer size=”20″]
簡単ですが、これも是非覚えておいてください。

まとめ

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

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

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

それでは、また。

この記事を書いた人

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。

目次