[言語別TIME処理] PHPで時間処理

2017年4月25日

PHP テクノロジー プログラミング 特集

PHPにおける時間処理はサーバーサイドなので、必須と言えるでしょう。 任意の日数後に処理したりする方法って意外と面倒くさい書き方をしなければいけませんが、処理を知らないともっとめんどくさくなります。 OSのタスク処理でやればいいかと考えがちですが、言語内のみで処理してしまうことも時には重要。

ソース

<?php date_default_timezone_set('Asia/Tokyo'); class timeFunction{ // 強制初期起動 function __construct(){ // start-time $start = $this->getMsTime(); echo "start : ". $start ."s".PHP_EOL; // sec2datetime echo "secConvert : ".$this->getYMDHIS($start).PHP_EOL; // MicroTime echo "MicroSeconds :".$this->getMsTime(); echo "sleep : start..."; $this->setSleep(5.0); echo "...sleep : end".PHP_EOL; $end = $this->getMsTime(); echo "end : ". $end ."s".PHP_EOL; echo "passage : " . ($end - $start) ."s".PHP_EOL; } // second function getTime(){ return time(); } // micro-second function getMsTime(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } // Wait Time function setSleep($ms){ sleep($ms); } // $second-data -> YMDHIS(week) function getYMDHIS($sec){ $y = date("Y" , $sec); //年 $m = date("m" , $sec);//月 $d = date("d" , $sec); //日 $h = date("H" , $sec); //時 $i = date("i" , $sec); //分 $s = date("s" , $sec); //秒 $w = date("w" , $sec); //曜日 $week = array("日","月","火","水","木","金","土"); return $y."年".$m."月".$d."日 ".$week[$w]."曜日 ".$h."時".$i."分".$s."秒"; // return $sec; } } new timeFunction;

実行

$ php timeFunction.php start : 1492844453.8167s secConvert : 2017年04月22日 土曜日 16時00分53秒 MicroSeconds :1492844453.8168sleep : start......sleep : end end : 1492844458.8175s passage : 5.0008299350739s

解説

PHPでtimeコマンドを使う場合はtimezone設定が必要

毎回サーバーを立ち上げてこの手の処理をする時に、timezoneのwarningが表示されてしまいますが、 ※「Warning: date()」というアラート これを回避するには、サーバーモジュールであるPHPのphp.iniにちゃんとセットするか、PHPソースコードに以下を記述しておくことで回避できます。 date_default_timezone_set('Asia/Tokyo'); プログラム処理の冒頭に書いておくといいでしょう。 タイムゾーンが固定されているのであれば、全てのPHPファイルに記述してもいいかもしれませんね。

秒数から情報を取得

time()コマンドの情報があれば、dateコマンドで情報を得ることができます。 date("取得フォーマット" , time()からの秒数);

ミリ秒の取得方法

PHPでは、以下の関数を作っておくと便利にmsecが習得できるようになります。 // micro-second function getMsTime(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } 秒数がいらない場合は、$usecのみ使いましょう。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ