function humanTime($hour, $min) {
$times = [
0 => '%s o\'clock',
2 => 'a couple of mins past %s',
5 => 'five past %s',
8 => 'around ten past %s',
10 => 'ten past %s',
15 => 'quarter past %s',
20 => 'twenty past %s',
25 => 'twenty five past %s',
27 => 'around half past %s',
30 => 'half past %s',
33 => 'around thirty five past %s',
35 => 'thirty five past %s',
40 => 'twenty to %s',
43 => 'around quarter to %s',
45 => 'quarter to %s',
47 => 'about ten to %s',
50 => 'ten to %s',
53 => 'about five to %s',
55 => 'five to %s'
];
$hourWord = [
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine',
'ten',
'eleven',
'twelve'
];
$hour = (int) $hour;
$min = (int) $min;
$closest = null;
foreach ($times as $key => $item)
if ($closest === null || abs($min - $closest) > abs($key - $min)) $closest = $key;
if ($hour === 0) $hour = 12;
if ($min > 40) $hour = $hour === 12 ? 1 : $hour + 1;
return sprintf($times[$closest], $hourWord[(int) $hour - 1]);
}