国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

用JavaScript腳本將當地時間轉換成其它時區

2024-04-27 13:55:12
字體:
來源:轉載
供稿:網友

作者: BUILDER.COM

毫無疑問,用javaScript腳本可以通過直接查看用戶的時鐘,方便地在網頁上顯示本地時間。但是,如果你想顯示不同地區的時間—--例如,如果你的本部在別的國家,你想查看“本國”時間而非當地時間,又該怎么辦呢?

要做到這一點,必須進行各種時間計算才能將當地時間轉換為目的時間。本文將解釋如何進行這些計算。

第一步:

事情的第一步是獲得當地時間。在Javascript中,這無疑可以通過初始化一個Data()對象來輕松完成。

// create Date object for current location

d = new Date();

通過調用Data()對象的getTime()方法,即可顯示1970年1月1日后到此當時時間之間的毫秒數。

// convert to msec since Jan 1 1970

localTime = d.getTime();

第二步:

下一步,通過Data()對象的getTimezoneOffset()方法來找出當地時間偏移值。在缺省情況下,此方法以分鐘顯示時區偏移值結果,因此在早先的計算中要將此值轉換成毫秒。

// obtain local UTC offset and convert to msec

localOffset = d.getTimezoneOffset() * 60000;

注意,getTimezoneOffset()方法的負返回值表示當地時間在全球標準時間(UTC)之前,而正返回值則表示當地時間在全球標準時間(UTC)之后。

注意:萬一你想知道我是如何得到60000這個倍增因數的,記住1000毫秒等于一秒,而一分鐘等于60秒。因此 ,將分鐘轉換成毫秒,要用60乘以1000等于60000。

第三步

將本地時間與本地時區偏移值相加得到當前國際標準時間(UTC)。

// obtain UTC time in msec

utc = localTime + localOffset;

這里,變量utc包含當前國際標準時間(UTC)。但是,此時間以1970年1月1日到現在所含有的毫秒數來表示。暫時讓它這樣表示,因為還要進行一些計算。

第四步

得到國際標準時間(UTC)后,再獲得目標城市的國際標準時間(UTC)小時偏移值,把它轉換成毫秒,再加上國際標準時間(UTC)。

// obtain and add destination's UTC time offset

// for example, Bombay

// which is UTC + 5.5 hours

offset = 5.5;

bombay = utc + (3600000*offset);

注意:萬一你想知道我是如何得到3600000這個倍增因數的,記住1000毫秒等于一秒,而一小時等于3600秒。因此 ,將小時轉換成毫秒,要用3600乘以1000等于3600000。

此時,變量bombay包含印度孟買城的當地時間。此當地時間以1970年1月1日到現在所含有的毫秒數來表示。顯然,這不是很合理,因此我們還要進行一些計算。

第五步

通過初始化一個新的Data()對象,并調用此對象的toLocalString()方法,我們將前一步中計算得到的時間值轉換成一個大家可以看得懂的日期/時間字符串。

// convert msec value to date string

nd = new Date(bombay);

document.writeln("Bombay time is " + nd.toLocaleString() + "<br>");

這樣轉換就完成了!

總結

理解上面的步驟后,我們再看一看這段腳本(列表A),它建立一個緊湊,自定義的函數calcTime()來執行所有的計算并返回一個時間值。

列表A

<html>

<head>

<script language="JavaScript">

// function to calculate local time

// in a different city

// given the city's UTC offset

function calcTime(city, offset) {

// create Date object for current location

d = new Date();

 

// convert to msec

// add local time zone offset

// get UTC time in msec

utc = d.getTime() + (d.getTimezoneOffset() * 60000);

 

// create new Date object for different city

// using supplied offset

nd = new Date(utc + (3600000*offset));

 

// return time as a string

return "The local time in " + city + " is " + nd.toLocaleString();

}

// get Bombay time

alert(calcTime('Bombay', '+5.5'));

// get Singapore time

alert(calcTime('Singapore', '+8'));

// get London time

alert(calcTime('London', '+1'));

</script>

</head>

<body>

</body>

</html>

這里,函數calcTime()接受一個城市名及它的國際標準時間(UTC)偏移值(按小時計)。然后內部執行所有上面描述的計算,并返回一個包含此城市當地時間的字符串。

以下是列表A輸出內容的一些樣本。

孟買當地時間為2005年8月1日,星期一下午4時43分51秒

新加坡當地時間為2005年8月1日,星期一下午7時13分51秒

倫敦當地時間為2005年8月1日,星期一下午12時13分51秒

下次你坐下來為你的網頁編寫時區腳本時,這段腳本有望節省你的一些時間。享受一下!!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖县| 日喀则市| 临西县| 嘉定区| 兴城市| 江津市| 政和县| 忻城县| 嘉义县| 呼和浩特市| 时尚| 峨边| 碌曲县| 金塔县| 夏河县| 通山县| 盐城市| 桦南县| 大兴区| 宜昌市| 阳高县| 钟山县| 乐安县| 英超| 长沙县| 余庆县| 乌兰察布市| 伊吾县| 乳源| 黔东| 玛曲县| 元江| 息烽县| 蒙自县| 敦煌市| 将乐县| 绥滨县| 天全县| 奉化市| 军事| 罗山县|