动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网页制作 > Javascript教程
网页制作:Dreamweaver教程,FrontPages教程,Javascript教程,HTML教程,CSS教程,心得技巧,DHTML教程,网页特效,Discuz!论坛
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Javascript教程 ]的信息



本月文章推荐
.一个非常漂亮的脚本日历.
.象调试C#程序一样调试JavaScript.
.一个非常实用的Javascript类库.
.Javascript实例教程(17) 使用字符.
.js用于树型结构级联选择.
.Javascript实例教程(4) 探测浏览.
.Javascript设计漫天雪花.
.网站繁简转换解决方案--ASP,JSP,.
.冒泡算法的三种JavaScript表示.
.Email地址加密javascript版.
.用于自动添加Digg This!按钮的Ja.
.URL编码转换,escape() encodeURI.
.JavaScript仿Windows关机效果.
.JavaScript Web页面内容导出到Wo.
.网页javascript精华代码集.
.如何实现iframe(嵌入式帧)的自适.
.Javascript代码混淆综合解决方案.
.Javascript实例教程(9) 随机显示.
.Firefox浏览器兼容JS脚本供参考.
.修改后的prototype.js,增加进度.

用JavaScript脚本将当地时间转换成其它时区

文章类别:Javascript教程 | 发表日期:2006-2-22 |


作者: 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秒

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


上一篇:Javascript获取地址参数 人气:15319
下一篇:利用搜索引擎引用来高亮页面关键字 人气:10524
点击此处浏览全部JavaScript的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-20 站长俱乐部新闻发布系统 v5.19
2008-5-20 DotNetTextBox网页编辑器 v3.4.7
2008-5-20 phpMyFAQ v2.5.0 多国语言版
2008-5-20 DreamArticle 文章管理系统 v2.0
2008-5-20 Drupal v7.xdev Build080518
2008-5-20 逐迹内容管理系统AspxNuke v2.0.
2008-5-20 ajax奥运留言本 v1.0
2008-5-20 QQ空间博客全自动挂机互踩好友
2008-5-20 网人采集 v1.2.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号