出退勤管理アプリケーションのようなものを構築する際、勤務時間に応じた時給計算が必要になりますよね。
つい最近、そんなプログラムをphpで構築する機会があったので、コードを残しておきます。
コピペで使えますので、ご活用ください。
先ずは、時間の掛け算をおさえる
こんな関数を作ってみます。
function MultiplTime($time,$mult) { //時間を「時」「分」「秒」に分ける $times = explode(":",$time); //「時」を「分」に変換します $hour = $times[0] * 60; //「秒」を「分」に変換します $second = round($times[2]/60 ,2); //「分」を足し上げます $minutes = $hour + $times[1] + $second; // 掛けたい数を掛けて、秒に変換します。 $result = $minutes * $mult * 60;//割合いを掛け算して秒に変換 // 秒のtimestampを「mktime」で算出し、date関数で「H:i:s」に変換 return date("H:i:s", mktime(0,0,$result)); }
これで、指定した数字(上記のプログラムでは「$mult」)を掛けた場合の時刻が算出されます。
$time = "02:04:19"; $mult = 3; $result = MultiplTime($time,$mult); echo $result;
上記の結果は、
>> 06:12:57
になります。
勤務時間に時給を掛ける
さて、本題です。
上記の時間の掛け算の基本を踏まえて、時給計算をしてみましょう。
function MultiplTimeMoney($time,$Hourlywage){ //時間を「時」「分」「秒」に分ける $times = explode(":",$time); //「時」はそのまま $hour = $times[0]; //「分」を「時」に $second = round( $times[1] / 60, 3); //「秒」を「時」に $minutes = round( $times[2] / 360, 3); //「時」をすべて足しあげ、時給を掛ける $result = ( $hour + $second + $minutes) * $Hourlywage; return $result; }
こんな感じですかね。「時間」給なので、分や秒を時間に変換しているのがポイントです。
$time = "102:05:20"; $Hourlywage = 1000; $result = MultiplTimeMoney($time,$Hourlywage); echo $result;
102時間5分20秒、仕事をした人が時給1,000円の場合、給与を算出すると、
>> 102139
となりました。うん、大丈夫そうですね。
ちなみに、分や秒を時間に変換する際、「round」を使っているので、小数点切り捨てしてます。
こちらは、四捨五入するのかどうかなど、決め次第だと思いますので、適宜変えていただければと思います。