Javascript - 覆盖新的Date()行为以抵消GMT

时间:2012-06-04 17:48:35

标签: javascript

我正在开发一个使用Comet将数据传输回Web客户端的网站。我的应用程序非常时间敏感,我有一个图表显示每秒添加的点数。

由于Web应用程序是Comet驱动的,因此客户端不需要处理日期,它应该只使用服务器时间戳来显示信息。即,无论用户的时区如何,图表上的绘制点都应在工具提示中显示服务器时间戳。

我认为我最好的方法是使用REST检索服务器的时间戳。然后测量服务器和客户端时间之间的时区偏移量,添加/减去差异并将其用作客户端的时间戳以用于显示目的。

有没有办法覆盖new Date()的默认行为导致我将服务器的时间戳作为本地?

非常感谢。

2 个答案:

答案 0 :(得分:1)

我编写了库TimeShift.js,它允许覆盖Date构造函数并设置当前时间和时区。我为了测试目的而编写它,但它也可以用于其他用途。

请务必查看当前库的注意事项。它目前仅支持GMT的固定偏移,因此不支持DST更改。

答案 1 :(得分:0)

重新定义它,它应该可以正常工作:

if(Date) {
    try{
        Date = null;
        Date = function() {
            console.log("The more things change, the more they stay the same!");
        }
        Date();
    } catch(exeption) {
        console.log("Couldn't override Date object.");
    }
}