date time

by Roshan Karunarathna

JavaScript

/*----------------------------------function to process num of days into human readable counts-----------------*/
var _humanise=function(total_days,diff){
    var d, h, m, s;
    s = Math.floor(diff / 1000);
    m = Math.floor(s / 60);
    s = s % 60;
    h = Math.floor(m / 60);
    m = m % 60;
    d = Math.floor(h / 24);
    h = h % 24;
    var date_current = new Date();
    var utime_target = date_current.getTime() + total_days*86400*1000;
    var date_target = new Date(utime_target);

    var diff_year  = parseInt(date_target.getUTCFullYear() - date_current.getUTCFullYear());
    var diff_month = parseInt(date_target.getUTCMonth() - date_current.getUTCMonth());
    var diff_day   = parseInt(date_target.getUTCDate() - date_current.getUTCDate());
    var diff_hour  = parseInt(date_target.getUTCHours() - date_current.getUTCHours());
    var diff_mins  = parseInt(date_target.getUTCMinutes() - date_current.getUTCMinutes());

    var days_in_month = [31, (date_target.getUTCFullYear()%4?29:28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    var date_string = "";
    while(true)
    {
        date_string = "";
        date_string += (diff_year>0?diff_year + " years ":"");

        if(diff_month<0){diff_year -= 1; diff_month += 12; continue;}

        if(diff_day<0){diff_month -= 1; diff_day += days_in_month[((11+date_target.getUTCMonth())%12)]; continue;}
        //if(diff_day<0){            
                date_string += (h>0?h + " hours":""); 
                date_string += (m>0?m + " minutes":""); 
        //}
        if(diff_day>25){            
                date_string += (diff_month>0?(Number(diff_month) + 1)+ " months ":"");
        }
        else{
            if(diff_day<10){
                if(diff_month==1){
                    date_string += " a month ";
                }
                else{
                    date_string += (diff_month>0? diff_month + " months ":"");
                }
            }
            else{
                if(diff_month==1){
...