【发布时间】:2015-10-31 08:54:06
【问题描述】:
这听起来像是一个愚蠢的问题,但是如何将两个日期之间的时间转换为百分比?
我正在使用这个 Jquery 插件:http://tinacious.github.io/goalProgress/
页面上计算百分比的脚本是:
$('#timerGoal').goalProgress({
goalAmount: 100,
currentAmount: 40,
textBefore: '',
textAfter: '% Completed.'
});
上面写着goalAmount: 我希望它保持在100,但是上面写着currentAmount: 40, 我想以某种方式找到两天之间的百分比差异,我知道我必须设置开始日期、当前日期和结束日期以查找百分比。
我确定部分代码必须是:
$startDate = '01/01/2015 12:00:00';
$currentDate = date('d/M/Y H:i:s');
$endDate = '02/15/2015 12:00:00';
找出两个日期之间的差异相当容易,但这是我无法掌握的第三个日期,尤其是要使其成为百分比。
有什么想法吗?
我的想法是这样的:
[取自:How to find the difference in days between two dates]
$daylen = 60*60*24;
$date1 = '2010-03-29';
$date2 = '2009-07-16';
echo (strtotime($date1)-strtotime($date2))/$daylen;
但我读到的都是两个日期而不是三个日期。
这是我想出的。 它还没有计算百分比,但它可能会出错:
$startDate = '08/01/2015 12:00:00';
$currentDate = date('d/M/Y H:i:s');
$endDate = '09/01/2015 12:00:00';
$startDate =str_replace(array(':', '/', ' '), '', $startDate);
$currentDate =str_replace(array(':', '/', ' '), '', $currentDate);
$endDate =str_replace(array(':', '/', ''), ' ', $endDate);
$mainPercent = $endDate - $startDate;
$actualPercent = $endDate - $currentDate;
$displayPercent = $actualPercent/$mainPercent * 100;
echo $displayPercent;
今天的日期是08/07/2015,我得到的是901.2015119993,这显然不是一个百分比,但它是一个开始。
工作解决方案:
$startDate = strtotime('08/01/2015 12:00:00');
$currentDate = time(date('d/M/Y H:i:s'));
$endDate = strtotime('09/15/2015 12:00:00');
$dateDivideBy = $endDate - $startDate;
$dateDivide = $currentDate - $startDate;
$divideProduct = $dateDivide / $dateDivideBy;
$datePercent = round($divideProduct * 100);
echo $datePercent;
使用此工作代码和今天的日期为08/07/2015,$datePercent 的值为14。
【问题讨论】:
-
date('01/01/2015...')的意义何在?这些都不是格式化字符,所以你最好只有$start = '01/01/...',如果你想找到时间字符串之间的差异,你应该把strtotime()它们转换成整数,你可以在上面做数学运算。