我正在创建一个包含里程碑的用户界面,我将使用进度条来显示这一点。
我正在努力想出里程碑设定完成日期与今天的日期之间的百分比。
例如,如果我有一个名为“Live to Site”的里程碑,将于2015年12月1日发生,并且我将里程碑放在1月1日,我想确定从开始日期到结束日期。
小提琴:http://jsfiddle.net/zz4c16fx/2/
var start = new Date(2015,0,1), // Jan 1, 2015 - The date we put this milestone in
end = new Date(2015,7,24), // June 24, 2015 - The date the milestone is due
today = new Date(), // April 23, 2015
p = Math.round(100-((end - start) * 100 ) / today) + '%';
// Update the progress bar
$('.bar').css( "width", p ).after().append(p);
这是我的尝试,但要么我的数学错了,要么我的想法不正确。返回的数字是99%
。我觉得这个数字应该会更低,看看我们今天还有1.5个月的时间。
我的最终结果是显示一个进度条,显示我们与开始日期,结束日期和今天日期的完成日期有多接近。
答案 0 :(得分:5)
试试这个:
var start = new Date(2015, 0, 1), // Jan 1, 2015
end = new Date(2015, 7, 24), // June 24, 2015
today = new Date(), // April 23, 2015
p = Math.round(((today - start) / (end - start)) * 100) + '%';
// Update the progress bar
$('.bar').css("width", p).after().append(p);
答案 1 :(得分:1)
尝试此操作,将结束日期和开始日期转换为单位时间戳值。
// Convert to unix values timestamp values
var startDate = start.getTime();
var endDate = end.getTime();
var todayDate = today.getTime();
// Get the total possible timestamp value
var total = endDate - startDate;
// Get the current value
var current = todayDate - startDate;
// Get the percentage
var percentage = (current / total) * 100;
alert(percentage);
JsFiddle http://jsfiddle.net/x3snbz2w/2/
答案 2 :(得分:1)
要获得迄今为止在一个日期和另一个日期之间经过的天数百分比,您需要计算开始和结束之间的时间,然后计算开始和今天之间的时间。然后将第二个数字除以第一个数字:
var start = new Date(2015,0,1),
end = new Date(2015,7,24),
today = new Date();
var timeBetweenStartAndEnd = (end - start);
var timeBetweenStartAndToday = (today - start);
var p = Math.round(timeBetweenStartAndToday / timeBetweenStartAndEnd * 100);
console.log("Percentage of days elapsed thus far: " + p);