2012/11/6 13:08:53作者:佚名來源:網絡
【實例名稱】
JS代碼實現全球的時間查看表
【實例描述】
在賓館的大堂經??吹饺蚋鞯氐囊恍r間,這也可用在賓館或航空部門的網頁上,用戶可通過選擇時區來查看不同地方的時間。
【實例代碼】
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>標題頁-學無憂(www.yzddtk.cn)</title> </head> <body bgcolor="#cccccc" OnLoad="getTime(timezone, 0)"> <script language="JavaScript"> var timerRunning = false; var timezone = "格林尼治標準時間"; var adjust = 0; function getTime(tzone, diff) //獲取指定時區的時間 { if (timerRunning) { clearTimeout(updatetime); timerRunning = false; } gmtOffset=eval(diff+adjust); //此處設置時區差別 timezone = tzone; checkDateTime(); } function checkDateTime () { var today = new Date(); //獲取當前時間 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(); //當前計算機上的時間和UTC 之間相差的分鐘數 yourOffset = yourOffset + adjust;
if ((((month == 4) && (date > 20)) || month > 4) && (month < 11 || ((month == 10) && day < 30))) adjust -= 60;
ourDifference = eval(gmtOffset - yourOffset); //根據本地時間和前面獲取的與utc之間的差別 var half = eval(ourDifference % 60); //取60的余,剩下的是分鐘數 ourDifference = Math.round(ourDifference / 60); //獲取間隔的小時數 hour = eval(hour - ourDifference); //用本地小時-間隔的小時 var m = new Array("", "1","2","3", "4","5","6", "7","8","9", "10","11","12"); //月份數組 var leap = eval(year % 4); //判斷閏年的變量(不太精確)
if ((half == -30) || (half == 30)) minute += 30; if (minute > 59) minute -= 60, hour++; //當超過60分鐘時,小時數增加 if (minute < 0) minute += 60, hour--; //當小于60分鐘時,小時數減少 if (hour > 23) hour -= 24, date += 1; //當超過24小時時,天數加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 --; //如果小時數小于0,則天數減1 if ((date == 32) && (month == 12)) month = m[1], date = 1, year++; //當超過一年時 if (date == 32) date = 1, month++; //當超過一月時 if ((date < 1) && (month == 1)) month= m[12], date = 31, year--; //當前月份為1月份時,如果天數小于1,則轉到12月份 if (date < 1) date = 31, month --; //日子小于1時,月份減1 if (((month == 4) || (month == 6) || //一月30天的設置 (month== 9) || (month == 11)) && (date == 31)) date = 30; if ((month == 2) && (date > 28)) date = 29; //2月份的設置 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; //顯示兩位數的時間 dateTime = " " + dateTime; dateTime += ((minute < 10) ? ":0" : ":") + minute; //顯示兩位數的分鐘 dateTime += ((second < 10) ? ":0" : ":") + second; //顯示兩位數的秒 dateTime += (hour >= 12) ? "下午, " : "上午, "; //顯示漢字:上午和下午 dateTime += year + "年" + month + "月" + date + "日" ; //顯示年月日
document.clock.zonetime.value = dateTime; //顯示所選時區的時間 document.clock.zonename.value = timezone; //顯示選擇的時區 updatetime=setTimeout("checkDateTime()", 1000); //定時更新時間-每隔1秒 timerRunning = true; } </script> <br> <form name=clock> <input type=text name=zonetime size=28> <br> <br> <b>當前選擇的地區</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>
【運行效果】
【難點剖析】
本例的重點有兩個:格林尼治時間的定義,以及當地時間與標準時間之間的時間差。全球被劃分為24個時區,以通過英國格林尼治天文臺的本初子午線為標準,其東西經度7.5度的范圍為零時區,每個時區中央經線上的時間就是各時區的標準時間?!癵etTimezoneOffset”方法用來獲取當地時間與UTC(標準時間)之間的時間差。因為此方法返回的是分鐘數,所以可以通過“/60”的方式獲取小時數,然后通過“%60”的方式獲取剩余的分鐘數。
【源碼下載】
為了JS代碼的準確性,請點擊:全球的時間查看表 進行本實例源碼下載
標簽: 時間
相關文章
ip雷達 v5.0.2綠色版
詳情WinSCPv5.15.1綠色中文版
詳情filezilla client v5.5
詳情wireshark中文版 v3.4.9
詳情Boson Netsimv10.8破解版
詳情風行播放器 v3.0.6.106
詳情愛奇藝客戶端 v10.1.0.6636官方版
詳情搜狐影音 v7.0.19.0官方版
詳情樂視視頻 v7.3.2.192
詳情華數tv客戶端PC版 v1.1.2.0
詳情cbox央視影音 v5.1.2.1經典版
詳情軟媒收音機(魔方) v1.13
詳情傾聽網絡收音機 v3.0.0.0
詳情魅影流聲全球網絡收音機 v1.0.0.1
詳情酷狗電臺 v8.2.75
詳情暴龍網絡收音機 v2.5.1
詳情克莉2v1.0中文版
詳情冬日計劃v1.2中文版
詳情刺客信條英靈殿v1.0吾愛破解版
詳情刺客信條英靈殿終極v1.0免安裝破解版
詳情動物森友會v1.10.0最新破解版
詳情哈迪斯殺出地獄v1.37中文破解版
詳情嗜血印中文豪華版v1.0豪華版破解版 附游戲攻略秘籍
詳情城市戰斗v1.0中文破解版
詳情尼爾人工生命v1.0steam免費破解版
詳情尼爾人工生命升級版v1.0PC破解版
詳情尼爾人工生命升級版v1.2247中文破解版
詳情層層恐懼2中文破解版v1.0綠色免安裝版
詳情往日不再v1.0 steam破解版
詳情往日不再v1.0pc破解版
詳情救贖之路v1.0中文破解版
詳情斯蓋爾女仆v1.0中文破解版
詳情新盜墓筆記官方版v1.215.589730
詳情無盡的拉格朗日無限金幣鉆石版v1.2.267172破解版
詳情明日之后無限小太陽版v1.0.246安卓版
詳情雙生幻想vivo版v6.6.83安卓版
詳情劍網1歸來內購免費版v1.1.116安卓版
詳情模擬城市我是市長國際版v0.69.21342.22832安卓版
詳情迷你世界999999迷你幣版v1.20.5破解版
詳情王牌戰爭無限內購版v9.7安卓版
詳情云上城之歌不氪金版v10.16安卓版
詳情王鏟鏟的致富之路破解版v1.1.8安卓版
詳情創造與魔法無限點券版v1.0.0505安卓版
詳情狩獵使命九游版v1.6.6.000
詳情魔鏡物語變態版v2.1.4無限金幣版
詳情黑月手游免費版v2.2.0安卓版
詳情曙光英雄v1.0.12.0.20無限鉆石版
詳情原始傳奇無限元寶版v1.6.806內購破解版
詳情