获取两个javascript日期之间经过的时间百分比

时间:2011-01-12 18:44:55

标签: javascript jquery user-interface date time

我正在尝试查找一个学年剩下多少天并将其作为jQuery UI进度条返回。

jQuery UI progressbars只占用百分比。在今天的日期,我怎样才能找到两个提供日期之间在时间范围内的百分比?

3 个答案:

答案 0 :(得分: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) + '%' );

答案 1 :(得分: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看到它在行动......

答案 2 :(得分:0)

最简单的方法(通过算法 - 您可以将代码视为练习)是:

  1. 确定您在学年的天数(大多数公立学校通常为185天)
  2. 计算当前日期和课程结束之间剩余的上学日数(确保忽略周末,假日,服务日等,因为这些不是185的一部分)。
  3. 从第二步中取出值并将其分成第一步。这会给你你的百分比。
  4. 在jQuery UI进度条中显示。