2011-01-12 40 views
4

我试图找到多少天都留在一个学年,并返回它作为一个jQuery UI的进度百分比。得到两者之间的经过时间的javascript日期

jQuery UI的progressbars只取百分比。给定今天的日期,我怎样才能找到我在两个提供日期之间的时间跨度的百分比?

回答

0

最简单的方法(算法 - 你可以找出代码作为练习)是:

  1. 确定的天,你必须在学年(通常约185对大多数公立学校)
  2. 计算当前的日期和类的结束之间离开学校天数(确保你忽略了周末,节假日,在职天等,因为这些不是185的一部分)。
  3. 从步骤2乘值,并将其分成第一。这会给你你的百分比。
  4. 显示,在jQuery UI的进度条。
9

例子:http://jsfiddle.net/FLaJM/4/

var start = new Date(2005,0,1), 
    end = new Date(2021,0,1), 
    today = new Date(); 

alert(Math.round(100-((end - start) * 100)/today) + '%'); 

,或者如果你想要剩余的百分比:

例子:http://jsfiddle.net/FLaJM/3/

alert(Math.round(((end - start) * 100)/today) + '%'); 
+0

我需要的逆:someDate = start.getTime()+(( end.getTime() - start.getTime())* percentage)。 – GijsjanB 2014-09-10 20:54:10

1

如果您正在使用MomentJS,我强烈建议Javascript的日期的东西,你可以这样做:

var percentOfDayRangeComplete = function(start, end) { 
    var now = moment(); 
    start = start || moment(now).startOf('day'); 
    end = end || moment(now).endOf('day'); 
    var totalMillisInRange = end.valueOf() - start.valueOf(); 
    var elapsedMillis = now.valueOf() - start.valueOf(); 
    // This will bound the number to 0 and 100 
    return Math.max(0, Math.min(100, 100 * (elapsedMillis/totalMillisInRange))); 
}; 

jsFiddle看到它在行动......

相关问题