程序并非直接使用new Date()取的客户端操作系统的时间,而是服务器的时间(Linux事先与某一台时间服务器校对过时间–为北京时间)。而产生问题的根源在于,服务器将它当前时间转成毫秒数后传递给客户端,客户端显示的时候没有进行时差修正。使用getTimezoneOffset()可解决这个问题,因为它返回的是格林威治时间与本地时间之间的时差,而使用new Date()得到的结果,还是相对于本地时间的显示,所以想真正实现客户端与服务器端显示的时间一致,需要做如下调整:

var date:Date = new Date(xx);

var timezoneOffset:Number = date.getTimezoneOffset();

date.setTime(date.getTime() + timezoneOffset * 60 * 1000 + 480 * 60 * 1000);

先使用timezoneOffset()【此方法返回的是分钟】方法获取差值,这个就得到的是格林威治时间,而北京时间相对于它是需要再加上8小时的,也就是 8 * 60 = 480分钟。

 

http://www.dreamdu.com/javascript/date.getTimezoneOffset/

getTimezoneOffset函数语法
 
date.getTimezoneOffset();
getTimezoneOffset函数返回值
 
返回本地时间与用UTC表示当前日期的时间差,以分钟为单位
getTimezoneOffset函数说明
 
由于某些国家所占的时区不到一个小时的间隔,所以返回值以分钟计,而不是以小时记
 
可以通过getTimezoneOffset函数计算所在的时区
 
getTimezoneOffset函数示例
 
var d = new Date();
document.write(d.getTimezoneOffset());

 

更新日期: 2014-12-20 14:43:09
文章标签:
文章链接: 使用getTimezoneOffset方法修正时差
站方声明: 除特别标注, 本站所有文章均为原创, 互联分享, 尊重版权, 转载请注明.