| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
JavaScript脚本将当地时间转换成其它时区
作者:佚名    文章来源:网络    点击数:    更新时间:2006-11-30
 

用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>"); 

这样转换就完成了! 

[1] [2] 下一页


相关文章