时间戳之间增加或减少的百分比
Percentage Increase or Decrease Between timestamps
这应该更容易解决或 google 答案,但我就是做不好。可能是我卡住了:
这是我试过的:
$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;
但我得到的只是 0.47% 的改进,我的逻辑表明这确实是 33% 的改进。
我做错了什么?
只处理分钟就容易多了:
$ini_mins = 15;
$desired_mins = 10;
$improvement_mins = $ini_mins - $desired_mins;
$percent = ($improvement_mins / $ini_mins) * 100;
print_r($percent);
正如 Ryan 在他的回答中所说,只处理会议记录确实很直接也更容易。
但要补充一点,你做错了什么 - 你从 2015 年 9 月 15 日的 unix 时间中扣除了 1970 年 1 月 1 日 00:10:00 和 1970 年 1 月 1 日 00:15:00 的 unix 时间 19:00:00。当然,这两个数字之间的百分比差异很小。你正在做这样的事情
num1 = 100000 - 10
num2 = 100000 - 15
百分比 num1/num2 是 错误的 查找 10 和 15 之间百分比差异的方法;而且它会比 33% 小得多。
加上 你有一个代码错误。该数组称为 $array_desired 但您在 mktime 中引用了 $array_des。
好的。我想阿米特打开了我的思路。
根据他的评论,我 post 正确答案:
// 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;
这应该更容易解决或 google 答案,但我就是做不好。可能是我卡住了:
这是我试过的:
$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;
但我得到的只是 0.47% 的改进,我的逻辑表明这确实是 33% 的改进。 我做错了什么?
只处理分钟就容易多了:
$ini_mins = 15;
$desired_mins = 10;
$improvement_mins = $ini_mins - $desired_mins;
$percent = ($improvement_mins / $ini_mins) * 100;
print_r($percent);
正如 Ryan 在他的回答中所说,只处理会议记录确实很直接也更容易。
但要补充一点,你做错了什么 - 你从 2015 年 9 月 15 日的 unix 时间中扣除了 1970 年 1 月 1 日 00:10:00 和 1970 年 1 月 1 日 00:15:00 的 unix 时间 19:00:00。当然,这两个数字之间的百分比差异很小。你正在做这样的事情
num1 = 100000 - 10
num2 = 100000 - 15
百分比 num1/num2 是 错误的 查找 10 和 15 之间百分比差异的方法;而且它会比 33% 小得多。
加上 你有一个代码错误。该数组称为 $array_desired 但您在 mktime 中引用了 $array_des。
好的。我想阿米特打开了我的思路。 根据他的评论,我 post 正确答案:
// 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;