dannymcc
dannymcc

Reputation: 3814

Countdown in Javascript

I would like to put on our company intranet page the number of days until the next payday, however - the payday dates aren't every 4 weeks etc. they will be similar to this:

1st January 2011
15th February 2011
12th March 2011
20th April 2011
...

Is it possible to have a javascript countdown clock that has the above dates listed, so once one date has passed it would then start counting down until the next calendar date?

I can find plenty of examples of scripts that countdown until a specific date but none that start counting down to the second date once the first has passed.

Thanks, Dan

Upvotes: 1

Views: 1114

Answers (2)

Stewart
Stewart

Reputation: 4044

Search the web for "JavaScript tutorial".

Meanwhile, here's some code to get you started:

var dates = [
    new Date(2011, 0,  1),  // note that format is year, month-1, day
    new Date(2011, 1, 15),  // don't ask me why
    new Date(2011, 2, 12),
    new Date(2011, 3, 20)
];

var now = new Date();

for (var i in dates) {  // this is a foreach loop
    if (now < dates[i]) {
        document.write(Math.ceil((dates[i] - now) / 86400000));
        break;
    }
}

Upvotes: 0

TurBas
TurBas

Reputation: 1676

Put the dates in an array. Be careful, in Javascript the months are zero-based so ranging from 0 to 11. Iterate the array and when the date is bigger then today display the days in between:

    var calcPayDate = function () {
        var payDates = [];
        payDates.push(new Date(2011, 0, 1));
        payDates.push(new Date(2011, 1, 15));
        payDates.push(new Date(2011, 2, 12));
        payDates.push(new Date(2011, 3, 20));

        var today = new Date();
        for (var i = 0; i < payDates.length; i++) {
            if (payDates[i] > today) {
                document.getElementById('countdownDiv').innerHTML = calcDays(payDates[i], today);
                break;
            }
        }
    }

    var calcDays = function(date1, date2) {

        // The number of milliseconds in one day
        var ONE_DAY = 1000 * 60 * 60 * 24

        // Convert both dates to milliseconds
        var date1_ms = date1.getTime()
        var date2_ms = date2.getTime()

        // Calculate the difference in milliseconds
        var difference_ms = Math.abs(date1_ms - date2_ms)

        // Convert back to days and return
        return Math.round(difference_ms / ONE_DAY)

    }

The calcDays function is an function found on this site

The days are put in a div which is called 'countdownDiv'.

Upvotes: 2

Related Questions