- printf: documentation ( source)
<?php
$_POST['s1'] = '16.15';
$_POST['s2'] = '23.30';
$wagesLookup = [
'18:00' => 146 / 4, // morning
'22:00' => 204 / 4, // evening
'24:00' => 244 / 4 // night
];
$period = new DatePeriod(
DateTime::createFromFormat('H.i', $_POST['s1']),
new DateInterval('PT15M'),
DateTime::createFromFormat('H.i:01', "{$_POST['s2']}:01") // bump ahead to make "inclusive"
);
$total = 0;
foreach ($period as $dt) {
$time = $dt->format('H:i');
foreach ($wagesLookup as $mark => $pay) {
if ($time <= $mark) {
break;
}
}
printf("%s earned %.02f\n", $dt->format('H:i'), $pay);
$total += $pay;
}
echo "Total: $total";