Php 根据两个时间戳的当前时间计算百分比?
我尝试获取两个时间戳的百分比:Php 根据两个时间戳的当前时间计算百分比?,php,Php,我尝试获取两个时间戳的百分比:$startTime和$endTime,其中: $startTime是事件的开始日期 $endTime是结束日期 需要计算从$currentTime到$endTime的剩余时间百分比。 为此,我愿意: function leftTimeCampaign($startTime, $endTime) { $currentTime = time(); if (($startTime < $currentTime) && ($curr
$startTime
和$endTime
,其中:
$startTime
是事件的开始日期
$endTime
是结束日期
需要计算从$currentTime
到$endTime
的剩余时间百分比。
为此,我愿意:
function leftTimeCampaign($startTime, $endTime)
{
$currentTime = time();
if (($startTime < $currentTime) && ($currentTime < $endTime)) {
return (100 * ($startTime - time())) / ($startTime - $endTime);
}
return 0;
}
函数leftTimeCampaign($startTime,$endTime)
{
$currentTime=time();
如果($startTime<$currentTime)&($currentTime<$endTime)){
返回值(100*($startTime-time())/($startTime-endTime));
}
返回0;
}
我建议您将此值原样(0..1范围)用于进一步的操作/存储,并在显示时仅将其乘以100
我还建议,如果前提条件为false,不要简单地返回“0”。更清楚的是,如果Start
End
,则返回值域之外的值(例如-1)以表示错误,使用其他错误报告机制(例如异常)或简单地将案例声明为未定义的行为(这很好,只需添加assert()
调用以明确说明)。如果Current
End
,您可能希望根据您的场景返回1作为特例
编辑:要获得剩余的相对时间,只需采取相反的方法:
1 - (Current - Start) / (End - Start)
百分比:
100 * (1 - (Current - Start) / (End - Start))
您的输入和当前+预期输出是什么?输入是:leftTimeCampaign(
1426840989
,1427445789
);输出值应为0到100(百分比)之间的数字有什么问题?除了将两个负数相除(这似乎有点奇怪)之外,这应该是可行的。此链接可能有助于解决您的问题。请注意,您在可能打算使用$currentTime
的位置再次调用time()
。不管怎样,正如杰罗恩所说,这有点倒退。对不起,我想说的是,时间过去了多少,这是什么变化?1426723200
,1426896000
考虑到你发布的时间(大约UTC 13:38:00,或1426858680),这给了我一个左时间21.8%
,听起来差不多<代码>100×(1)−(1426858680−1426723200)÷(1426896000−1426723200))=21.59722222。你期待一个不同的结果吗?是的,同样的结果。谢谢你的帮助谢谢!这太棒了。
100 * (1 - (Current - Start) / (End - Start))