我们正在开发需要以自定义时区显示所有日期的应用程序。我使用外部库(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;