0

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

4

2 回答 2

3

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

结果将精确到网络延迟。

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

于 2012-05-08T14:58:25.227 回答
0

您可以通过 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);
于 2012-05-08T15:42:07.707 回答