与今天相比,两个日期之间的百分比

时间:2015-04-24 05:17:54

标签: javascript

我正在创建一个包含里程碑的用户界面,我将使用进度条来显示这一点。

我正在努力想出里程碑设定完成日期与今天的日期之间的百分比。

例如,如果我有一个名为“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个月的时间。

我的最终结果是显示一个进度条,显示我们与开始日期,结束日期和今天日期的完成日期有多接近。

3 个答案:

答案 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);

演示:http://jsfiddle.net/zz4c16fx/6/

答案 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);