0

我用一堆 if else 语句制作了这个时间和日期函数。但是有没有更好的方法来做到这一点?我认为它使用了大量的处理器能力。

该函数增加时间。每个数字都是一个 var。所以以秒为单位,我们有单秒 (sec) 和数十秒 (tense)。

在这里查看 jsfiddle: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);
4

1 回答 1

1

为什么不直接使用Date()对象?而不是所有这些计算,只需以固定的时间间隔(例如每秒几次)从中提取时间,然后显示 - 这样,它将与客户端计算机上的时间同步,而不是不准确的setInterval函数,这将很长一段时间后可能无法准确反映时间(尤其是考虑到您在十几个嵌套条件下所做的所有跑腿工作!)

如果您有多个用户都需要参考公共时钟,请改用 PHP 获取日期 - 这将返回服务器日期/时钟,而不是客户端。

于 2013-02-05T10:14:32.923 回答