我想根据当前日期计算两个日期(开始和结束)之间经过的时间的百分比(从0到100)。 例如:
$start_date = "01/01/2018";
$end_date = "31/12/2018";
$today = "30/06/2018";
预期输出:
百分比:50
有什么主意吗?谢谢
答案 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%
我认为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%