首页 > 代码库 > 根据不同区时显示相应的时间

根据不同区时显示相应的时间

        现在项目基本上告一段落了,难得有一定的闲暇,今天利用数小时完成了一个功能模块——根据不同区时显示相应的时间,这方面网上基本没有现成的例子,现在将代码粘贴如下:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
        <html>
                <head>
                        <meta http-equiv="content-type" content="text/html; charset=GB2312" />
                        <title>根据不同区时显示相应的时间</title>
                        <script type="text/javascript">
                                <!-- Begin
                                        function changeTZ() {
                                                var selectedValue = http://www.mamicode.com/document.getElementById("TZ").value;
                                                var timeZone = selectedValue.split("*")[0];
                                                var city = selectedValue.split("*")[1];
                                                //console.log("所选城市:" + city + "、所选城市区时:" + timeZone);

                                                var date = new Date();
                                                var currentTimezone = -(date.getTimezoneOffset()/60);//当前区时
                                                var timeDifference = currentTimezone - timeZone;//时差
                                                //console.log("当前区时:"+currentTimezone+"、时差:"+timeDifference);

                                                var year = 0;  //所选城市时间:年
                                                var month = 0; //所选城市时间:月
                                                var day = 0;   //所选城市时间:日
                                                var hour = 0;  //所选城市时间:小时
                                                var minute = 0;//所选城市时间:分钟
                                                var second = 0;//所选城市时间:秒

                                                var currentYear = date.getFullYear(); //当前时间:年
                                                var currentMonth = date.getMonth()+1; //当前时间:月
                                                var currentDay = date.getDate();      //当前时间:日
                                                var currentHour = date.getHours();    //当前时间:小时
                                                var currentMinute = date.getMinutes();//当前时间:分钟
                                                var currentSecond = date.getSeconds();//当前时间:秒

                                                second = currentSecond;

                                                if(timeDifference.toString().split(".").length == 2){//所选城市区时为小数
                                                        var intVlaue = parseInt(timeDifference.toString().split(".")[0]);//获取整数部分
                                                        var floatVlaue = timeDifference - intVlaue;//获取小数部分
                                                        hour = currentHour- intVlaue;
                                                        minute = currentMinute - floatVlaue*60;
                                                        if(minute>=60){
                                                                hour = hour + 1;
                                                                minute = minute - 60;
                                                        }else if(minute < 0){
                                                                hour = hour - 1;
                                                                minute = 60 + minute;
                                                        }
                                                        //console.log("当前时间(小时):" + currentHour+"、所选城市时间(小时):"+hour);
                                                }else{
                                                        hour = currentHour-timeDifference;
                                                        minute = currentMinute;
                                               }

                                               if(hour >= 24){
                                                        day = currentDay + 1;
                                                        hour = hour - 24;
                                                }else if(hour >= 0 && hour < 24){
                                                        day = currentDay;
                                                        hour = hour;
                                                }else if(hour < 0){
                                                        day = currentDay - 1;
                                                        hour = hour + 24;
                                                }

                                                if(currentMonth==1 || currentMonth==3 || currentMonth==5 || currentMonth==7 || currentMonth==8 || currentMonth==10 || currentMonth==12 ){//31天
                                                        if(day > 31){
                                                                if(currentMonth==12){
                                                                        year = currentYear + 1;
                                                                        month= 1;
                                                                        day = day - 31;
                                                                }else{
                                                                        year = currentYear;
                                                                        month= currentMonth + 1;
                                                                        day = day - 31;
                                                                }
                                                        }else if(day == 0){
                                                                if(currentMonth==1){
                                                                        year = currentYear - 1;
                                                                        month= 12;
                                                                        day = 31;
                                                                }else{
                                                                        year = currentYear;
                                                                        month= currentMonth - 1;
                                                                        if(month==4 || month==6 || month==9 || month==11){
                                                                                day = 30;
                                                                        }else if(month==2){
                                                                                if((year % 400 == 0)||(year % 4 == 0)&&(year % 100 != 0)){//闰年
                                                                                        day = 29;
                                                                                }else{//平年
                                                                                        day = 28;
                                                                                }
                                                                        }
                                                                }
                                                        }else{
                                                                year = currentYear;
                                                                month= currentMonth;
                                                                day = day;
                                                        }
                                                }
                                                if(currentMonth==4 || currentMonth==6 || currentMonth==9 || currentMonth==11){//30天
                                                        if(day > 30){
                                                                year = currentYear;
                                                                month= currentMonth + 1;
                                                                day = day - 30;
                                                       }else if(day == 0){
                                                                year = currentYear;
                                                                month= currentMonth - 1;
                                                                day = 31;
                                                        }else{
                                                                year = currentYear;
                                                                month= currentMonth;
                                                                day = day;
                                                        }
                                                }
                                                if(currentMonth==2){//28天或29天
                                                        year = currentYear;
                                                        if((year % 400 == 0)||(year % 4 == 0)&&(year % 100 != 0)){//闰年
                                                                if(day > 29){
                                                                        year = currentYear;
                                                                        month= currentMonth + 1;
                                                                        day = day - 29;
                                                                }else if(day == 0){
                                                                        year = currentYear;
                                                                        month= 1;
                                                                        day = 31;
                                                                }else{
                                                                        year = currentYear;
                                                                        month= currentMonth;
                                                                        day = day;
                                                                }
                                                        }else{//平年
                                                                if(day > 28){
                                                                        year = currentYear;
                                                                        month= currentMonth + 1;
                                                                        day = day - 28;
                                                                }else if(day == 0){
                                                                        year = currentYear;
                                                                        month= 1;
                                                                        day = 31;
                                                                }else{
                                                                        year = currentYear;
                                                                        month= currentMonth;
                                                                        day = day;
                                                                }
                                                        }
                                                }

                                                hour = ((hour <= 9) ? ("0" + hour) : hour);  
                                                minute = ((minute <= 9) ? ("0" + minute) : minute);
                                                second = ((second <= 9) ? ("0" + second) : second);
                                                Clock.innerHTML = city + ":" + year +"年"+ month +"月"+ day +"日&nbsp;" + hour + ":" + minute + ":" + second;
                                                setTimeout("changeTZ()", 1000);
                                        }
                                //  End -->
                        </script>
                </head>
                <body bgcolor="#ffffff" onl oad="javascript:changeTZ();">
                        <div id="Clock"></div>
                        <select style="font-size: 9pt;" onchange="changeTZ()" id="TZ">
                                <option value=http://www.mamicode.com/"-12*国际换日线">GMT-12
                                <option value=http://www.mamicode.com/"-11*萨摩亚群岛">GMT-11
                                <option value=http://www.mamicode.com/"-10*夏威夷">GMT-10
                                <option value=http://www.mamicode.com/"-9*阿拉斯加">GMT-9
                                <option value=http://www.mamicode.com/"-8*太平洋时间">GMT-8
                                <option value=http://www.mamicode.com/"-7*美国山区">GMT-7
                                <option value=http://www.mamicode.com/"-6*墨西哥">GMT-6
                                <option value=http://www.mamicode.com/"-5*南美洲太平洋">GMT-5
                                <option value=http://www.mamicode.com/"-4.5*加拉加斯">GMT-4.5
                                <option value=http://www.mamicode.com/"-4*大西洋">GMT-4
                                <option value=http://www.mamicode.com/"-3.5*纽芬兰">GMT-3.5
                                <option value=http://www.mamicode.com/"-3*巴西利亚">GMT-3
                                <option value=http://www.mamicode.com/"-2*大西洋中部">GMT-2
                                <option value=http://www.mamicode.com/"-1*亚速尔">GMT-1
                                <option value=http://www.mamicode.com/"0*格林尼治">GMT
                                <option value=http://www.mamicode.com/"1*罗马">GMT +1
                                <option value=http://www.mamicode.com/"2*以色列">GMT +2
                                <option value=http://www.mamicode.com/"3*莫斯科">GMT +3
                                <option value=http://www.mamicode.com/"3.5*德黑兰">GMT+3.5
                                <option value=http://www.mamicode.com/"4*巴库">GMT +4
                                <option value=http://www.mamicode.com/"4.5*喀布尔">GMT+4.5
                                <option value=http://www.mamicode.com/"5*新德里">GMT +5
                                <option value=http://www.mamicode.com/"5.5*孟买">GMT+5.5
                                <option value=http://www.mamicode.com/"5.75*加德满都">GMT+5.75
                                <option value=http://www.mamicode.com/"6*达卡">GMT +6
                                <option value=http://www.mamicode.com/"6.5*仰光">GMT+6.5
                                <option value=http://www.mamicode.com/"7*曼谷">GMT +7
                                <option value=http://www.mamicode.com/"8*北京" selected>GMT +8
                                <option value=http://www.mamicode.com/"9*东京">GMT +9
                                <option value=http://www.mamicode.com/"9.5*达尔文">GMT+9.5
                                <option value=http://www.mamicode.com/"10*悉尼">GMT +10
                                <option value=http://www.mamicode.com/"11*马加丹">GMT +11
                                <option value=http://www.mamicode.com/"12*惠灵顿">GMT +12
                        </select>
                </body>
        </html>

        【0分下载代码