Это должно быть легче решить или погуглить ответ, но я просто не могу сделать это хорошо. Может быть, я просто застрял
Вот что я попробовал:
$now = time();
// i.e Improve police arriving time from 15 mins to 10 mins
$array_ini = explode(':',$ini_value); // "00:15:00" in my example (15 mins)
$array_desired = explode(':',$desired_value); // "00:10:00" in my example
$ini = $now-mktime($array_ini[0],$array_ini[1],$array_ini[2]);
$des = $now-mktime($array_desired[0],$array_desired[1],$array_desired[2]);
$percent = (1-$ini/$des)*100;
Но все, что я получаю, — это улучшение на .47%, и моя логика говорит, что это действительно улучшение на 33%.
Что я делаю неправильно?
Намного легче иметь дело с минутами:
$ini_mins = 15;
$desired_mins = 10;
$improvement_mins = $ini_mins - $desired_mins;
$percent = ($improvement_mins / $ini_mins) * 100;
print_r($percent);
Как действительно сказал Райан в своем ответе, действительно просто и просто иметь дело с минутами.
Но чтобы добавить к этому, что вы делаете неправильно — вы вычитаете время Unix от 01 января 1970 г. 00:10:00 и 01 января 1970 г. 00:15:00 от времени Unix от 15 сентября 2015 г. 19:00:00. Конечно, процентная разница между этими двумя числами будет небольшой. Вы делаете что-то вроде этого
num1 = 100000 - 10
num2 = 100000 - 15
процентное отношение num1 / num2 неправильно способ найти процентную разницу между 10 и 15; и также это будет намного меньше чем 33%.
плюс у вас есть ошибка кода Массив называется $ array_desired, но вы ссылаетесь на $ array_des в mktime.
Хорошо. Я думаю, что Амит открыл мой разум.
На основании его комментария я выкладываю правильный ответ:
// This line is not needed any more
//$now = time();
// i.e Improve police arriving time from 15 mins to 10 mins
$array_ini = explode(':',$ini_value); // "00:15:00" in my example (15 mins)
$array_desired = explode(':',$desired_value); // "00:10:00" in my example
// Time must to be based on Jan, 1 1970
// Hours are from 1 to 23, so must be increased by 1
$ini = mktime($array_ini[0]+1,$array_ini[1],$array_ini[2],1,1,1970);
$des = mktime($array_desired[0]+1,$array_desired[1],$array_desired[2],1,1,1970);
$percent = (1-$des/$ini)*100;