如何使用与浏览器时区不同的时区



我们正在开发需要以自定义时区显示所有日期的应用程序。我使用外部库(GWT...),其中使用了javascript Date。我无法覆盖 GWT 代码。此外,javascript Date似乎是设置自定义时区的更好位置。我们首先尝试使用原型机制覆盖"访问器":

var original_getUTCHours = Date.prototype.getUTCHours;
Date.prototype.getUTCHours = function(){
    // -4 for the time zone offset
    return original_getUTCHours.call(this)-4;
}
var myDate = new Date();
alert(myDate.getUTCHours()); 

但是这个机制似乎很难实现,因为有很多"访问器"需要覆盖。每个访问器都需要特定的算法来处理偏移量。

因此,我们尝试使用原型机制对 Date 构造函数进行 ovvered。

var original_date_constructor = Date.prototype.constructor;
function Date(){
    var now = original_date_constructor;
    original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds())
}

但是我们在Chrome调试器中收到此错误:

Uncaught TypeError: Object function Date(){
var now = original_date_constructor;
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds());
} has no method 'getUTCFullYear'

是否可以覆盖 Date 构造函数,正确的方法是什么?

谢谢

您需要

重新应用Date原型:

Date.prototype = original_date_constructor.prototype;

最新更新