用php计算日期之间的百分比

用php计算日期之间的百分比,php,date,Php,Date,我想根据当前日期计算两个日期(开始和结束)之间经过的时间百分比(从0到100)。 例如: $start_date = "01/01/2018"; $end_date = "31/12/2018"; $today = "30/06/2018"; 预期产出: 百分比:50 有什么想法吗?谢谢您可以将所有日期转换为时间戳,并从中进行计算。strotime()将为您转换日期,但这将用英文格式(MM/DD/YYYY)而不是(DD/MM/YYYY)的斜杠解释日期。如果用破折号替换斜杠,它将以DD-MM-Y

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

$start_date = "01/01/2018";
$end_date = "31/12/2018";
$today = "30/06/2018";
预期产出:

百分比:50


有什么想法吗?谢谢

您可以将所有日期转换为时间戳,并从中进行计算。strotime()将为您转换日期,但这将用英文格式(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;
日期(“z”)表示一年中的某一天。
你的“今天”返回180

如果我们假设开始和结束是当年的开始和结束,那么您只需要计算百分比的日期(“z”)。
将值四舍五入到所需格式,并回显百分比

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

我想一年365天就足够准确了。
您可以使用
365+日期(“L”)
而不是上面代码中的365,如果是闰年,它将添加一个。 意思是:

echo round(date("z", strtotime(str_replace("/", "-", $today)))/(365 + date("L"))*100,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%

从差异产生百分比。开始和结束是否总是从当前年度开始和结束?执行日期差异(今天,日期1)/日期差异(日期2,日期1)。乘以100。可能是美丽的复制品!对我来说很有魅力!