Search code examples
javascriptcountdown

javascript: convert seconds to months


I am using the following script to do a countdown.

function startCountdown() {
    var countdownDate = new Date("9/13/2013 12:00 AM");
    var currentDate = new Date();
    var dateDifference = new Date(countdownDate - currentDate);
    var seconds = dateDifference.valueOf() / 1000;
    CountBack(seconds);
}

function CountBack(seconds) {
    var DisplayFormat = "DAYS days and HOURS hours";
    DisplayFormat = DisplayFormat.replace("DAYS", (Math.floor(seconds/86400)) % 100000);
    DisplayFormat = DisplayFormat.replace("HOURS", (Math.floor(seconds/3600)) % 24);
    $('span.countdown').html(DisplayFormat);
}

startCountdown();

How can I show the months left too? (I want like: 3 months, 29 days and 3 hours)

Thank you.


Solution

  • Use this simple nice function. Check out the LIVE DEMO:

    var cc = new Date("9/13/2012 12:00 AM"),
        c = new Date();
    
    function timeDifference(d, dd) {
        var hour = 60 * 60 * 1000,
            day = hour * 24,
            month = day * 30,
            ms = Math.abs(d - dd),
            months = parseInt(ms / month, 10);    
    
        ms = ms - months * month;    
        var days = parseInt(ms / day, 10); 
        ms -= days * day;
        var hours = parseInt(ms / hour, 10);   
        ms -= hours * hour;
    
        return [
            months + " months",
            days + " days",
            hours + " hours"
        ].join(", ");
    };
    
    document.body.innerHTML += timeDifference(cc, c) + "<br />";