Get the percent of time elapsed between two javasc

2019-03-30 21:03发布

I'm trying to find how many days are left in a school year and return it as a jQuery UI progressbar.

jQuery UI progressbars only take percentages. How can I find the percentage of how far along I am in the timespan between two supplied dates, given today's date?

3条回答
倾城 Initia
2楼-- · 2019-03-30 21:45

The easiest way (algorithmically - you can figure out the code as an exercise) is to:

  1. Determine the number of days you have in the school year (typically ~185 for most public schools)
  2. Calculate the number of school days left between your current date and the end of classes (make sure you ignore weekends, holidays, in-service days, etc as these are not part of the 185).
  3. Take the value from step two and divide it into the first. That will give you your percentage.
  4. Display that in the jQuery UI progress bar.
查看更多
混吃等死
3楼-- · 2019-03-30 21:55

Example: 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) + '%' );

or if you wanted the percentage remaining:

Example: http://jsfiddle.net/FLaJM/3/

alert( Math.round(((end - start) * 100 ) / today) + '%' );
查看更多
叼着烟拽天下
4楼-- · 2019-03-30 22:08

If you are using MomentJS, which I highly recommend for Javascript date stuff, you could do this:

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 to see it in action...

查看更多
登录 后发表回答