【コピペでできる】phpで出勤時間に応じた時給計算を行うプログラム

出退勤管理アプリケーションのようなものを構築する際、勤務時間に応じた時給計算が必要になりますよね。

つい最近、そんなプログラムを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」を使っているので、小数点切り捨てしてます。

こちらは、四捨五入するのかどうかなど、決め次第だと思いますので、適宜変えていただければと思います。

あわせて読みたい