2012/11/6 13:08:53作者:佚名來源:網(wǎng)絡(luò)
【實例名稱】
JS代碼實現(xiàn)全球的時間查看表
【實例描述】
在賓館的大堂經(jīng)??吹饺蚋鞯氐囊恍r間,這也可用在賓館或航空部門的網(wǎng)頁上,用戶可通過選擇時區(qū)來查看不同地方的時間。
【實例代碼】
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>標(biāo)題頁-學(xué)無憂(yzddtk.cn)</title> </head> <body bgcolor="#cccccc" OnLoad="getTime(timezone, 0)"> <script language="JavaScript"> var timerRunning = false; var timezone = "格林尼治標(biāo)準(zhǔn)時間"; var adjust = 0; function getTime(tzone, diff) //獲取指定時區(qū)的時間 { if (timerRunning) { clearTimeout(updatetime); timerRunning = false; } gmtOffset=eval(diff+adjust); //此處設(shè)置時區(qū)差別 timezone = tzone; checkDateTime(); } function checkDateTime () { var today = new Date(); //獲取當(dāng)前時間 var year = today.getYear() + 00; //獲取年 var month = today.getMonth()+1; //獲取月 var date = today.getDate(); //獲取日期 var day = today.getDay(); //獲取日 var hour = today.getHours(); //獲取小時 var minute = today.getMinutes(); //獲取分 var second = today.getSeconds(); //獲取秒
var lastSat = date - (day+1); while (lastSat < 32) lastSat+=7; if (lastSat > 31) lastSat+=-7; var firstSat = date - (day+1); while (firstSat > 0) firstSat+=-7; if (firstSat < 1) firstSat+=7; if ((((month == 4) && (date >= firstSat)) || month > 4) && (month < 11 || ((month == 10) && day <= lastSat))) adjust += 60; yourOffset = (new Date()).getTimezoneOffset(); //當(dāng)前計算機(jī)上的時間和UTC 之間相差的分鐘數(shù) yourOffset = yourOffset + adjust;
if ((((month == 4) && (date > 20)) || month > 4) && (month < 11 || ((month == 10) && day < 30))) adjust -= 60;
ourDifference = eval(gmtOffset - yourOffset); //根據(jù)本地時間和前面獲取的與utc之間的差別 var half = eval(ourDifference % 60); //取60的余,剩下的是分鐘數(shù) ourDifference = Math.round(ourDifference / 60); //獲取間隔的小時數(shù) hour = eval(hour - ourDifference); //用本地小時-間隔的小時 var m = new Array("", "1","2","3", "4","5","6", "7","8","9", "10","11","12"); //月份數(shù)組 var leap = eval(year % 4); //判斷閏年的變量(不太精確)
if ((half == -30) || (half == 30)) minute += 30; if (minute > 59) minute -= 60, hour++; //當(dāng)超過60分鐘時,小時數(shù)增加 if (minute < 0) minute += 60, hour--; //當(dāng)小于60分鐘時,小時數(shù)減少 if (hour > 23) hour -= 24, date += 1; //當(dāng)超過24小時時,天數(shù)加1 if (((month == 4) || (month == 6) || (month == 9) || (month == 11)) && (date==31)) date = 1, month ++; //指定的月為30天,超過30,則月份加1 if (((month == 2) && (date > 28)) && (leap != 0)) date = 1, month ++; //2月份比較特殊 if ((month == 2) && (date > 29)) date = 1, month++; //非閏年時候的2月份 if (hour < 0) hour += 24, date --; //如果小時數(shù)小于0,則天數(shù)減1 if ((date == 32) && (month == 12)) month = m[1], date = 1, year++; //當(dāng)超過一年時 if (date == 32) date = 1, month++; //當(dāng)超過一月時 if ((date < 1) && (month == 1)) month= m[12], date = 31, year--; //當(dāng)前月份為1月份時,如果天數(shù)小于1,則轉(zhuǎn)到12月份 if (date < 1) date = 31, month --; //日子小于1時,月份減1 if (((month == 4) || (month == 6) || //一月30天的設(shè)置 (month== 9) || (month == 11)) && (date == 31)) date = 30; if ((month == 2) && (date > 28)) date = 29; //2月份的設(shè)置 if (((month == 2) && (date > 28)) && (leap != 0)) date=28; for (i=1; i<13; i++) { if (month == i) { month = m[i]; break; } }
var dateTime = hour; dateTime = ((dateTime < 10) ? "0":"") + dateTime; //顯示兩位數(shù)的時間 dateTime = " " + dateTime; dateTime += ((minute < 10) ? ":0" : ":") + minute; //顯示兩位數(shù)的分鐘 dateTime += ((second < 10) ? ":0" : ":") + second; //顯示兩位數(shù)的秒 dateTime += (hour >= 12) ? "下午, " : "上午, "; //顯示漢字:上午和下午 dateTime += year + "年" + month + "月" + date + "日" ; //顯示年月日
document.clock.zonetime.value = dateTime; //顯示所選時區(qū)的時間 document.clock.zonename.value = timezone; //顯示選擇的時區(qū) updatetime=setTimeout("checkDateTime()", 1000); //定時更新時間-每隔1秒 timerRunning = true; } </script> <br> <form name=clock> <input type=text name=zonetime size=28> <br> <br> <b>當(dāng)前選擇的地區(qū)</b><br> <input type=text name=zonename size=21> <br> <br> <table border=1 cellpadding=5> <tr> <td align=center> <input type=button value="太平洋" onClick="getTime(this.value, +480)" name="button"> </td> <td align=center> <input type=button value="中心" onClick="getTime(this.value, +420)" name="button"> </td> <td align=center> <input type=button value="東方" onClick="getTime(this.value, +300)" name="button"> </td> </tr> <tr> <td align=center> <input type=button value="夏威夷" onClick=" getTime(this.value, +600)" name="button"> </td> <td align=center> <input type=button value="墨西哥" onClick="getTime(this.value, +360)" name="button"> </td> <td align=center> <input type=button value="新德里" onClick="getTime(this.value, -330)" name="button"> </td> </tr> <tr> <td align=center> <input type=button value="北京" onClick="getTime(this.value, -420)" name="button"> </td> <td align=center> <input type=button value="東京" onClick="getTime(this.value, -540)" name="button"> </td> <td align=center> <input type=button value="倫敦" onClick="getTime(this.value, +0)" name="button"> </td> </tr> </table> </form> </body> </html>
【運行效果】
【難點剖析】
本例的重點有兩個:格林尼治時間的定義,以及當(dāng)?shù)貢r間與標(biāo)準(zhǔn)時間之間的時間差。全球被劃分為24個時區(qū),以通過英國格林尼治天文臺的本初子午線為標(biāo)準(zhǔn),其東西經(jīng)度7.5度的范圍為零時區(qū),每個時區(qū)中央經(jīng)線上的時間就是各時區(qū)的標(biāo)準(zhǔn)時間。“getTimezoneOffset”方法用來獲取當(dāng)?shù)貢r間與UTC(標(biāo)準(zhǔn)時間)之間的時間差。因為此方法返回的是分鐘數(shù),所以可以通過“/60”的方式獲取小時數(shù),然后通過“%60”的方式獲取剩余的分鐘數(shù)。
【源碼下載】
為了JS代碼的準(zhǔn)確性,請點擊:全球的時間查看表 進(jìn)行本實例源碼下載
標(biāo)簽: JS代碼 時間 查看表
相關(guān)文章
Adobe indesign cs6中文版
詳情金山數(shù)據(jù)恢復(fù)大師官方版 v1.0.0.2
詳情南方測繪Cass10v10.1.6中文
詳情revit 2017
詳情KeyShot Pro 9中文(附安裝教程) v9.0.286
詳情網(wǎng)易新聞客戶端v105.3
詳情AIMP4v5.11.2421中文綠色美化版
詳情onekey一鍵還原v18.0.18.1008
詳情浩辰CAD2020綠色v20.0
詳情好圖網(wǎng)圖標(biāo)轉(zhuǎn)換工具v4.9.7
詳情aardiov35.0.0中文最新版
詳情Adobe Creative Cloud 2024簡體中文v5.3.0.48
詳情暴風(fēng)影音16 v9.04.1029去廣告精簡版
詳情ASP.NET Maker 2019(ASP.NET代碼生成工具)v12.0.4.0
詳情暴風(fēng)影音v5.92.0824.1111
詳情迅雷5穩(wěn)定版v5.8.14.706
詳情使命召喚17官方中文版 v1.0
詳情死亡之雨新的僵尸病毒中文v1.0綠色免安裝版
詳情輻射4v1.7.15.0整合版
詳情克莉2v1.0中文版
詳情冬日計劃v1.2中文版
詳情刺客信條英靈殿v1.0吾愛
詳情刺客信條英靈殿終極v1.0免安裝
詳情動物森友會v1.10.0最新
詳情哈迪斯殺出地獄v1.37中文
詳情嗜血印中文豪華版v1.0豪華版 附游戲攻略秘籍
詳情城市戰(zhàn)斗v1.0中文
詳情尼爾人工生命v1.0steam免費
詳情尼爾人工生命升級版v1.0PC
詳情層層恐懼2中文v1.0綠色免安裝版
詳情往日不再v1.0 steam
詳情往日不再v1.0pc
詳情小生活游戲內(nèi)置MOD版v2.0(78)安卓版
詳情使命召喚手游測試服最新版v1.9.41安卓版
詳情三國謀定天下官服v1.2.1安卓版
詳情熱血新手村高爆版v1.0.0安卓版
詳情我養(yǎng)你啊手機(jī)版v1.0.0安卓版
詳情看懂了就很恐怖的故事(細(xì)思極恐)中文版v1.0安卓版
詳情背包英雄中文手機(jī)版v1.1.1安卓版
詳情glow官方版v2.0.9安卓版
詳情三國大時代4霸王立志官方正版v1.9安卓版
詳情飛盧小說閱讀器手機(jī)版v7.0.7安卓版
詳情牛牛粵語詞典軟件v20.4.4安卓版
詳情PrettyUp視頻美化瘦身軟件v2.3.0
詳情化學(xué)方程式app中文版v1.1.0.20安卓版
詳情地下城堡3魂之詩2024安卓最新版v1.2.3安卓版
詳情南方都市報v6.10.0安卓版
詳情阿修羅之眼正版v1.0.10安卓版
詳情