回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 联系我们  
  首 页  网络资讯  教程资料  免费资源  建站指南  休闲娱乐  经典整站  访客留言  
  当前位置:首 页 >> 教程资料 >> 网页制作 >> 用JavaScript脚本将当地转换成其它时区
最 新 推 荐
淘宝网店“设计装修”..推荐
网页制作常见105个问..推荐
使用FrontPage2000注..推荐
网页制作常用代码推荐
颜色代码大全推荐
热 门 排 行
北京奥运会倒计时代码
如何在网页中插入Flas..
网页自动点击广告代码
星空动态星空背景特效..
如何用Frontpage下载..
网页两侧浮动广告代码
离开时自动提示设为首页
颜色代码大全推荐
怎么使网页跳转地址栏..
站长常用广告代码的表..
淘宝网店“设计装修”..推荐
在网页上设计飘动广告
网页制作常用代码推荐
网页常用特效整理:高..
网页制作常见105个问..推荐
使用css设置iframe样式
最 近 更 新
CSS在表格边框上的美..
Flash文件中多个swf调..
圆角边框的代码
股票即时行情查询系统
万能音.视频在线转换..
仿3721窗口拖动的代码
美化的GOOGLE广告代码
修改discuz5.5,让广..
一些所谓的CSS的“顶..
中英文双语导航菜单
广 告 位 置
站 内 搜 索
关键词

搜索方式

搜索范围

精确匹配
用JavaScript脚本将当地转换成其它时区

来源:盛绿设计 等级:默认等级
发布于2006-12-15 10:00 被读54次 【字体:

    毫无疑问,用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秒

下次你坐下来为你的网页编写时区脚本时,这段脚本有望节省你的一些时间。享受一下!!


相关专题:暂无相关专题

上一篇:使用css设置iframe样式
下一篇:在网页上显示一个会移动的透明时钟的代码

共有评论 0 条 网友评分 0分 查看全部

【发表评论】 评分:1分 2分 3分 4分 5分


Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2004-2005 盛绿设计 All Right Reserved. XCMS
冀ICP备06026128号