计算日期之间的百分比在PHP

时间:2018-11-16 19:44:04

标签: php date

我想根据当前日期计算两个日期(开始和结束)之间经过的时间的百分比(从0到100)。 例如:

$start_date = "01/01/2018";
$end_date = "31/12/2018";
$today = "30/06/2018";

预期输出:

  

百分比:50

有什么主意吗?谢谢

3 个答案:

答案 0 :(得分:0)

您可以将所有日期转换为时间戳,然后从那里进行数学运算。 strtotime()会为您转换日期,但是它将以斜杠解释您的日期,而英文格式为(MM / DD / YYYY)而不是(DD / MM / YYYY)。如果将斜杠替换为破折号,它将以DD-MM-YYYY格式读取。

$date_timestamp = strtotime(str_replace('/', '-', $date));

那只是一个问题:

$total = $end_date - $start_date;
$part = $todays_date - $start_date;
$percent = $part/$total * 100;

答案 1 :(得分:0)

Date(“ z”)给您一年中的某天。
您的“今天”返回180。

如果我们假设开始和结束是本年的开始和结束,那么您只需要date(“ z”)来计算百分比。
将值四舍五入为所需格式,然后回显百分比。

$today ="30/06/2018";
echo round(date("z", strtotime(str_replace("/", "-", $today)))/365*100,0) . "%";
// 49%

https://3v4l.org/EG6lt

我认为365天足够一年。
您可以使用365 + date("L")而不是上面的代码中的365,如果是a年,它将添加一个。 含义:

echo round(date("z", strtotime(str_replace("/", "-", $today)))/(365 + date("L"))*100,0) . "%";

答案 2 :(得分:0)

您至少需要三个变量:

$fromDate = strtotime("01/01/2018 ");
$currentDate = time();
$toDate = strtotime("01/01/2019");



//days between From and To
$datediffA = round(($toDate- $fromDate) / (60 * 60 * 24));
//days between From and Current
$datediffB =  round(($currentDate- $fromDate) / (60 * 60 * 24));

echo $datediffA;

echo $datediffB;

将输出:

365

320

现在知道这些数字了,您可以继续查找一个数字与另一个数字的百分比。

$percentage = ($datediffB*100)/$datediffA;

echo $percentage;

将输出:

87.671232876712%