Spoeken
Spoeken

Reputation: 2588

Time function, find a better solution

I have made this time and date function with a bunch of if else statements. But is there a better way to do this? I think it uses a lot of processor power.

The function increments time. Each number is a var. So in seconds we have single seconds (sec) and tens of seconds (tensec).

check out the jsfiddle here: http://jsfiddle.net/MLgbs/1/

$seconds = $('.seconds .one');
$tenseconds = $('.seconds .ten');
$minutes = $('.minutes .one');
$tenminutes = $('.minutes .ten');
$hours = $('.hours .one');
$tenhours = $('.hours .ten');
$days = $('.days .one');
$tendays = $('.days .ten');
$months = $('.months .one');
$tenmonths = $('.months .ten');
$years = $('.years .one');
$tenyears = $('.years .ten');
$houndredyears = $('.years .houndred');

var sec = 0;
var tensec = 0;
var min = 0;
var tenmin = 0;
var hours = 0;
var tenhours = 0;
var days = 0;
var tendays = 0;
var months = 0;
var tenmonths = 0;
var years = 0;
var tenyears = 0;
var houndredyears = 0;


function clock(){
    //Seconds
    if(sec < 9){
        sec++;
        console.log($seconds, sec);
    } else {
        sec = 0;
        console.log($seconds, sec);
        //Tenseconds
        if(tensec<5){
            tensec++;
            console.log($tenseconds, tensec);
        } else {
            tensec = 0;
            console.log($tenseconds, tensec);

            //minutes
            if(min<9){
                min++;
                console.log($minutes, min);
            } else {
                min = 0;

                console.log($minutes, min);
                //tenminutes
                if(tenmin<5){
                    tenmin++;

                    console.log($tenminutes, tenmin);
                } else {
                    tenmin=0;

                    console.log($tenminutes, tenmin);
                    //hours
                    if(hours<9 && (tenhours*10+hours<23)){
                        hours++;

                        console.log($hours, hours);
                    } else {
                        hours=0;

                        console.log($hours, hours);
                        //tenhours
                        if(tenhours<2 && (tenhours*10+hours<23)){
                            tenhours++;
                            console.log($tenhours, tenhours);
                        } else {
                            tenhours=0;
                            console.log($tenhours, tenhours);
                            if(days < 9 && (tendays*10+days<30)){
                                days++;
                                console.log($days, days);
                            } else {
                                if(days !== 0){
                                    days = 0;
                                    console.log($days, days);
                                }
                                if(tendays<2){
                                    tendays++;
                                    console.log($tendays, tendays);
                                } else {
                                    tendays = 0;
                                    console.log($tendays, tendays);
                                    if(months<9 && (tenmonths*10+months<11)){
                                        months++;
                                        console.log($months, months);
                                    } else {
                                        months = 0;
                                        console.log($months, months);
                                        if(tenmonths<0){
                                            tenmonths++;
                                            console.log($tenmonths, tenmonths);
                                        } else {
                                            tenmonths = 0;
                                            console.log($tenmonths, tenmonths);
                                            if(years < 9){
                                                years++;
                                                console.log($years, years);
                                            } else {
                                                years = 0;
                                                console.log($years, years);
                                                if(tenyears<9){
                                                    tenyears++;
                                                    console.log($tenyears, tenyears);
                                                } else {
                                                    tenyears = 0;
                                                    console.log($tenyears, tenyears);
                                                    if(houndredyears<9){
                                                        houndredyears++;
                                                        console.log($houndredyears, houndredyears);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

    }
}
setInterval(function(){clock();},1000);

Upvotes: 0

Views: 100

Answers (1)

MickMalone1983
MickMalone1983

Reputation: 1054

Why don't you just use the Date() object? Rather than all this calculation, simply pull the time from it at regular intervals (several per second, say), and display that - that way, it will be synced to the time on the client computer, rather than the inaccurate setInterval function, which will probably not give an accurate reflection of the time after very long (especially given all the legwork you're making it do with a dozen or so nested conditions!)

If you have multiple users who all require reference to a common clock, use PHP to get the date instead - this will return the server date/clock, instead of the client.

Upvotes: 1

Related Questions