Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据两个时间戳的当前时间计算百分比?_Php - Fatal编程技术网

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))