服务器和浏览器之间的时差



我们如何测量服务器时间和浏览器时间之间的时差?如果我们在浏览器和服务器中都以毫秒为单位计算时间,那么在服务器和浏览器位于两个不同的时区时,它会给我准确的结果吗?

没有内置的方法。您应该在应用程序级别执行此操作。您可以使用javascript检索时间并将此结果发送到服务器,在那里您可以清楚地知道它是什么时间。现在比较这些结果。

结果将准确到网络延迟。

如果您只想知道时区差异,那就足够了。但是,如果您想知道网络延迟,您可以估计它:将客户端时间从客户端发送到服务器,将服务器时间从服务器发送到客户端,考虑时区偏移量。其余的是客户端>服务器>客户端延迟。将其除以 2 - 这是单向延迟的第一个估计值。更好的估计需要更多的统计数据。

您可以通过 Javascript Date.getTimezoneOffset() 获取客户端的时区 GMT 偏移量,并将此值保存到隐藏字段中。下面是一个示例脚本,可用于确定客户端的时区:

var now = new Date();
var currentTimeZoneOffset = now.getTimezoneOffset();
var jan = new Date( now.getFullYear(), 0, 1, 2, 0, 0 ), jul = new Date( now.getFullYear(), 6, 1, 2, 0, 0 );
var hemisphere = ( jan.getTime() % 24 * 60 * 60 * 1000 ) > ( jul.getTime() % 24 * 60 * 60 * 1000 );
var dstOffset = hemisphere ? jan.getTimezoneOffset() : jul.getTimezoneOffset();
var standardOffset = hemisphere ? jul.getTimezoneOffset() : jan.getTimezoneOffset();
var gmtHours = -currentTimeZoneOffset/60;
document.write("GMT time-zone offset: " + gmtHours +"<br>");
var isDstActive = (currentTimeZoneOffset-dstOffset) != 0;
document.write("Daylight saving time is active: " + isDstActive + "<br>");
var isTimezoneWithDst = (dstOffset-standardOffset) != 0;
document.write("DST is observed in this timezone: " + isTimezoneWithDst);

相关内容

  • 没有找到相关文章

最新更新